【问题描述】[中等]

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。
示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:
[[-1, 0, 1],[-1, -1, 2]
]

【解答思路】

排序+双指针


时间复杂度:O(N^2) 空间复杂度:O(1)

class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> res = new ArrayList<>();for(int k = 0; k < nums.length - 2; k++){if(nums[k] > 0) break;if(k > 0 && nums[k] == nums[k - 1]) continue;int i = k + 1, j = nums.length - 1;while(i < j){int sum = nums[k] + nums[i] + nums[j];if(sum < 0){while(i < j && nums[i] == nums[++i]);} else if (sum > 0) {while(i < j && nums[j] == nums[--j]);} else {res.add(new ArrayList<Integer>(Arrays.asList(nums[k], nums[i], nums[j])));while(i < j && nums[i] == nums[++i]);while(i < j && nums[j] == nums[--j]);}}}return res;}
}

【总结】

1. 审题 特殊条件进行优化
2.细节

List list = Arrays.asList(“a”,“b”,“c”);
将数组转化成List集合的方法

转载链接:https://leetcode-cn.com/problems/3sum/solution/3sumpai-xu-shuang-zhi-zhen-yi-dong-by-jyd/

参考链接:https://blog.csdn.net/kzadmxz/article/details/80394351

[Leedcode][JAVA][第15题][三数之和][数组][双指针]相关推荐

  1. 力扣第十五题-三数之和

    前言 力扣第十五题 三数之和 如下所示: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复 ...

  2. 代码随想录算法训练营第七天|454、四数相加Ⅱ 383、赎金信15、三数之和18、四数之和

    454.四数相加Ⅱ.383.赎金信.15.三数之和四数之和 四数相加 对于四数相加,我们可以定义一个map用来记录nums1与nums2的和对应次数,再遍历nums3与nums4,如果存在c与d使得a ...

  3. Leetcode题库 15.三数之和_0(双指针 C实现)

    第二次尝试结果:成功 第二次成果链接:三数之和 第一次尝试结果:失败 第一次过程如下 #include <stdio.h>void Bub_Sort(int* head, int low, ...

  4. LeetCode 15. 三数之和【双指针】

    15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...

  5. leetcode 16. 3Sum Closest | 16. 最接近的三数之和(双指针)

    题目 https://leetcode.com/problems/3sum-closest/ 题解 方法1:固定 L,双指针找 M.R 时间复杂度 O(n^2),推荐此方法. 证明不会有元素遗漏,详见 ...

  6. [ 热题 HOT 100] ---15.三数之和---排序+双指针

    1 题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...

  7. Leetcode题库 15.三数之和_1(双指针 C实现)

    第二次尝试结果:成功 第二次过程如下 #include <stdio.h>void Bub_Sort(int* head, int low, int high, int Bool) {// ...

  8. Leetcode每日一题:15.3sum(三数之和)

    思路:这道题与双指针法类似,使用三指针法 头尾各一个 中间一个来回扫,重点是如何剪枝,想了会我也只能剪出下面这样子了,但还是只超5%: 评论区笑傻: #include <iostream> ...

  9. leetcode算法题--三数之和

    原题链接:https://leetcode-cn.com/problems/3sum/ 排序+双指针法 先将数列从小到大排序 先选择一个数,这一步时间复杂度为O(n) 在这个数后面的数中用双指针分别从 ...

最新文章

  1. DeepMind网红博士300页论文出炉:面向NLP的神经迁移学习
  2. 真正简单的基于prototype的表单验证
  3. oracle部署--安装oracle软件与部署单实例数据库
  4. 是Excel的图,不!是R的图
  5. 前端如何查看音频的长度_Android音频可视化
  6. 自己动手实现分布式任务调度框架
  7. c#2.0 IEnumberable接口
  8. 凸优化第五章对偶 5.5 最优性条件
  9. 阿里、腾讯决战商业“OS”
  10. FroalaEditor使用方法汇总
  11. Windows平台下常见快捷指令
  12. 万字长文:全面解读新公链新生态
  13. Iterative Reweighted Least Squares
  14. 可惜知乎没有注销账号的选项
  15. 【金融量化】中泰证券何波先生关于XTP交易接口的演讲
  16. C−Fe3O4碳量子点修饰四氧化三铁纳米复合材料合成过程图示
  17. 有什么好用的配音软件?最好是免费的
  18. 通过Mycelipse,用Hibernate反向生成映射文件、Javabean等
  19. 乱贴小广告违法 有人仍一意孤行
  20. leetcode【每日一题】514. 自由之路 Java【待完成

热门文章

  1. Xcode8更新约束
  2. JavaScript实现快速排序
  3. 横竖屏切换时候Activity的生命周期的总结
  4. 漏洞:WebRTC 泄漏用户IP
  5. PHP企业级开发环境配置全攻略-IDE+SVN++(转)
  6. 存储过程里调用另一个存储过程的值
  7. 2021泉州高考学校成绩查询,2021泉州市地区高考成绩排名查询,泉州市高考各高中成绩喜报榜单...
  8. elasticsearch集群搭建-windows
  9. android 获取系统时间的时间戳 ,时间戳日期互转,计算日期时间差,获取明天日期,比较时间大小
  10. 腾讯地图 marker 从地图上清空