[Leedcode][JAVA][第15题][三数之和][数组][双指针]
【问题描述】[中等]
给你一个包含 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题][三数之和][数组][双指针]相关推荐
- 力扣第十五题-三数之和
前言 力扣第十五题 三数之和 如下所示: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复 ...
- 代码随想录算法训练营第七天|454、四数相加Ⅱ 383、赎金信15、三数之和18、四数之和
454.四数相加Ⅱ.383.赎金信.15.三数之和四数之和 四数相加 对于四数相加,我们可以定义一个map用来记录nums1与nums2的和对应次数,再遍历nums3与nums4,如果存在c与d使得a ...
- Leetcode题库 15.三数之和_0(双指针 C实现)
第二次尝试结果:成功 第二次成果链接:三数之和 第一次尝试结果:失败 第一次过程如下 #include <stdio.h>void Bub_Sort(int* head, int low, ...
- LeetCode 15. 三数之和【双指针】
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...
- leetcode 16. 3Sum Closest | 16. 最接近的三数之和(双指针)
题目 https://leetcode.com/problems/3sum-closest/ 题解 方法1:固定 L,双指针找 M.R 时间复杂度 O(n^2),推荐此方法. 证明不会有元素遗漏,详见 ...
- [ 热题 HOT 100] ---15.三数之和---排序+双指针
1 题目描述 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...
- Leetcode题库 15.三数之和_1(双指针 C实现)
第二次尝试结果:成功 第二次过程如下 #include <stdio.h>void Bub_Sort(int* head, int low, int high, int Bool) {// ...
- Leetcode每日一题:15.3sum(三数之和)
思路:这道题与双指针法类似,使用三指针法 头尾各一个 中间一个来回扫,重点是如何剪枝,想了会我也只能剪出下面这样子了,但还是只超5%: 评论区笑傻: #include <iostream> ...
- leetcode算法题--三数之和
原题链接:https://leetcode-cn.com/problems/3sum/ 排序+双指针法 先将数列从小到大排序 先选择一个数,这一步时间复杂度为O(n) 在这个数后面的数中用双指针分别从 ...
最新文章
- DeepMind网红博士300页论文出炉:面向NLP的神经迁移学习
- 真正简单的基于prototype的表单验证
- oracle部署--安装oracle软件与部署单实例数据库
- 是Excel的图,不!是R的图
- 前端如何查看音频的长度_Android音频可视化
- 自己动手实现分布式任务调度框架
- c#2.0 IEnumberable接口
- 凸优化第五章对偶 5.5 最优性条件
- 阿里、腾讯决战商业“OS”
- FroalaEditor使用方法汇总
- Windows平台下常见快捷指令
- 万字长文:全面解读新公链新生态
- Iterative Reweighted Least Squares
- 可惜知乎没有注销账号的选项
- 【金融量化】中泰证券何波先生关于XTP交易接口的演讲
- C−Fe3O4碳量子点修饰四氧化三铁纳米复合材料合成过程图示
- 有什么好用的配音软件?最好是免费的
- 通过Mycelipse,用Hibernate反向生成映射文件、Javabean等
- 乱贴小广告违法 有人仍一意孤行
- leetcode【每日一题】514. 自由之路 Java【待完成
热门文章
- Xcode8更新约束
- JavaScript实现快速排序
- 横竖屏切换时候Activity的生命周期的总结
- 漏洞:WebRTC 泄漏用户IP
- PHP企业级开发环境配置全攻略-IDE+SVN++(转)
- 存储过程里调用另一个存储过程的值
- 2021泉州高考学校成绩查询,2021泉州市地区高考成绩排名查询,泉州市高考各高中成绩喜报榜单...
- elasticsearch集群搭建-windows
- android 获取系统时间的时间戳 ,时间戳日期互转,计算日期时间差,获取明天日期,比较时间大小
- 腾讯地图 marker 从地图上清空