当前位置: 首页 > news >正文

LC15.三数之和、LC22括号生成

LC15.三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != kj != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

去重是关键!且固定一个数后,后两个数采用双指针的方式时间复杂度更低

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> list = new ArrayList<>();if(nums == null || nums.length < 3) return list;Arrays.sort(nums);for (int i = 0; i < nums.length; i++) {if(nums[i] > 0) break;if(i > 0 && nums[i] == nums[i - 1]) continue;int l = i + 1, r = nums.length - 1;while(l < r) {int sum = nums[i] + nums[l] + nums[r];if(sum == 0) {list.add(Arrays.asList(nums[i], nums[l],nums[r]));while (l<r && nums[l] == nums[l+1]) l++; // 去重while (l<r && nums[r] == nums[r-1]) r--; // 去重l++;r--;}else if (sum < 0) l++;else if (sum > 0) r--;}}return list;}
}

LC22括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入:n = 1
输出:["()"]
class Solution {public List<String> generateParenthesis(int n) {List<String> res = new ArrayList<>();if (n == 0) {return res;}back(n, n, res, new String());return res;}public void back(int leftn, int rightn, List<String> res, String temp) {if(leftn == 0 && rightn == 0) {res.add(temp);return;}if(leftn > rightn)  return;if(leftn > 0) {back(leftn-1,rightn,res,temp.concat("("));}if(rightn > 0) {back(leftn,rightn-1,res,temp.concat(")"));}}
}

相关文章:

  • OpenCV--滤波器(一)
  • Redis缓存的一些概念性问题
  • Milvus跨集群数据迁移
  • MySQL 保姆级教程(八):创建计算字段
  • 【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试
  • 传统后端SQL数据层替代解决方案: 内置数据源+JdbcTemplate+H2数据库 详解
  • YOLOv10改进 | Conv篇 |YOLOv10引入SPD-Conv卷积
  • 【前端技巧】css篇
  • React.ReactElement 与 React.ReactNode
  • Effective C++ 改善程序与设计的55个具体做法笔记与心得 3
  • SonarQube集成Jenkins平台搭建
  • 【Python】一文向您详细解析内置装饰器 @lru_cache
  • 【Android面试八股文】Kotlin内置标准函数let的原理是什么?
  • 初识C++ · 继承(1)
  • 乐鑫ESP32相关资料整理
  • 【刷算法】求1+2+3+...+n
  • ➹使用webpack配置多页面应用(MPA)
  • Akka系列(七):Actor持久化之Akka persistence
  • Apache的80端口被占用以及访问时报错403
  • Bytom交易说明(账户管理模式)
  • C++类中的特殊成员函数
  • CODING 缺陷管理功能正式开始公测
  • Cumulo 的 ClojureScript 模块已经成型
  • java概述
  • node.js
  • Puppeteer:浏览器控制器
  • Service Worker
  • Vue实战(四)登录/注册页的实现
  • 什么软件可以剪辑音乐?
  • 什么软件可以提取视频中的音频制作成手机铃声
  • -- 数据结构 顺序表 --Java
  • 说说动画卡顿的解决方案
  • 问题之ssh中Host key verification failed的解决
  • 正则与JS中的正则
  • 7行Python代码的人脸识别
  • Spring第一个helloWorld
  • 从如何停掉 Promise 链说起
  • # linux从入门到精通(三)
  • #APPINVENTOR学习记录
  • #NOIP 2014# day.1 T2 联合权值
  • $GOPATH/go.mod exists but should not goland
  • (13)DroneCAN 适配器节点(一)
  • (2)STM32单片机上位机
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (备忘)Java Map 遍历
  • (附源码)php新闻发布平台 毕业设计 141646
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (十六)一篇文章学会Java的常用API
  • (学习日记)2024.01.09
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .bat批处理(一):@echo off
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET Micro Framework初体验
  • .Net Web窗口页属性