给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

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

例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:
[[-1, 0, 1],[-1, -1, 2]
]

i做主线的遍历,从头至尾寻找满足条件的其他两个数字。
class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> res = new ArrayList<>();Arrays.sort(nums);for(int i = 0;i < nums.length-2;i++){if(i > 0 && nums[i] == nums[i - 1])continue;//一定要加这一句,否则会重复,所给例子会输出两个[-1,1,0]int low = i + 1,high = nums.length-1,sum = 0 - nums[i];while(low < high){if(nums[low] + nums[high] == sum){res.add(Arrays.asList(nums[i],nums[low],nums[high]));while(low < high && nums[low] == nums[low + 1]) low++;while(low < high && nums[high] == nums[high - 1]) high--;low ++;high--;}else if(nums[low] + nums[high] < sum){low ++;}else high--;}}return res;}
}

2019-04-14 09:49:33

转载于:https://www.cnblogs.com/NPC-assange/p/10704029.html

LeetCode--015--三元之和(java)相关推荐

  1. [Leetcode][第216题][JAVA][数组之和3][回溯]

    [问题描述][中等] [解答思路] 回溯 剪树枝 当和超过n 或 个数超过k 1. 正向求和 优化前 class Solution {public List<List<Integer> ...

  2. [Leetcode][第78题][JAVA][子集][位运算][回溯]

    [问题描述][中等] [解答思路] 1. 位运算 复杂度 class Solution {List<Integer> t = new ArrayList<Integer>(); ...

  3. LeetCode 三数之和 — 优化解法

    LeetCode 三数之和 - 改进解法 题目:给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复 ...

  4. [Leetcode][第889题][JAVA][根据前序和后序遍历构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] copyOfRange class Solution {public TreeNode constructFromPrePost(int[] pre, int[] ...

  5. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  6. [Leetcode][第79题][JAVA][单词搜索][DFS][回溯]

    [问题描述][中等] [解答思路] 1. DFS繁琐版本 class Solution {public boolean exist(char[][] board, String word) {bool ...

  7. [Leetcode][第40题][JAVA][数组总和2][回溯][剪枝]

    [问题描述][中等] [解答思路] 1. 减法 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Ar ...

  8. [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]

    [问题描述][中等] [解答思路] 1. 回溯 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.De ...

  9. [Leetcode][第77题][JAVA][组合][回溯]

    [问题描述][中等] [解答思路] 1. 回溯 class Solution {List<List<Integer>> lists = new ArrayList<> ...

  10. [Leetcode][第17题][JAVA][电话号码的字母组合][回溯]

    [问题描述][中等] [解答思路] 用哈希表/数组存储每个数字对应的所有可能的字母,然后进行回溯操作. 回溯过程中维护一个字符串,表示已有的字母排列(如果未遍历完电话号码的所有数字,则已有的字母排列是 ...

最新文章

  1. 安利Mastodon:属于未来的社交网络
  2. Linux 运维工程师的十个基本技能点
  3. 广义回归神经网络(GRNN)的数据预测
  4. 3DSlicer17:Logics
  5. C/C++中的拷贝构造函数和赋值构造函数
  6. 俄罗斯游戏软件:C语言应用初步感受
  7. MATLAB 批量改文件名称
  8. pandas之DataFrame合并merge
  9. 快速简单高效的搭建 SolrCloud 集群
  10. centos7 部署elasticsearch
  11. JQuery和JavaScript常用方法的一些区别
  12. 【事件驱动】【数码管识别】(C++多线程实现多幅图像的同步识别)
  13. 【课堂教学/课堂复习/课堂竞赛手段探析】给广大教师推荐一个期末课堂复习的最好办法
  14. unity visual effect Graph 1
  15. Tapestry5 事件分派机制
  16. Android熟悉使用PackageManager,ActivityManager,MemoryInfo,引入布局文件Include的使用,values的管理
  17. python基础练习题:纳特拼音alaphabeta【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  18. 口罩机远程监控运维解决方案
  19. 中图杯获奖作品计算机组,“中图杯”第十四届环境地图大赛召开 地图慧成指定制图软件...
  20. 《程序员十二时辰》,居然是这样的!内容过于真实 ...

热门文章

  1. Mybatis自动生成的Example类的使用与解析
  2. 软件工程师职业规划_为什么公司文化对您作为软件工程师的职业很重要
  3. Mysql深度讲解 – 子查询优化
  4. 日本 IT 圈神作之书,好懂得可怕
  5. Java程序员需要了解哪些技术?
  6. oracle存储过程rowcount用法,Oracle带输入、输出参数的存储过程回来受影响的行数SQL%ROWCOUNT...
  7. Lucas定理推导过程(全网最全,哈哈哈哈)
  8. 只因迷茫,开启博客之旅与诸君共勉之
  9. 浏览器无法访问php,php怎么访问浏览器
  10. win7系统下samba服务器无法登陆,win7系统访问NAS/Samba服务器失败的解决方法