【题目】

Given an array nums of n integers, are there elements abc in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Note:

The solution set must not contain duplicate triplets.

Example:

Given array nums = [-1, 0, 1, 2, -1, -4],A solution set is:
[[-1, 0, 1],[-1, -1, 2]
]

【思路】

拓展四数之和:https://www.cnblogs.com/inku/p/9977917.html

sort后,头尾两个指针。

sum=0,left++,right--,继续遍历,向中间逼近。

sum>0,right--,需要更小的数使之满足。

sum<0,left++,需要更大的数使之满足。

 if(sum==0){data.add(Arrays.asList(nums[i],nums[left], nums[right]));left++;right--;while(left<right&&nums[left]==nums[left-1])left++;while(left<right&&nums[right]==nums[right+1])right--;}else if(left<right&&sum>0)right--;elseleft++;}

答案去重

if(i>0&&nums[i]==nums[i-1]) continue;
while(left<right&&nums[left]==nums[left-1]) left++;
while(left<right&&nums[right]==nums[right+1]) right--;

【代码】

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

转载于:https://www.cnblogs.com/inku/p/9955638.html

[Leetcode 15]三数之和 3 Sum相关推荐

  1. [双指针|模拟] leetcode 15 三数之和

    [双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...

  2. LeetCode 15. 三数之和(3Sum)

    15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...

  3. LeetCode 15. 三数之和

    题目描述 15. 三数之和 思路 思路1 比较容易想到的就是,求三数之和等于0,可以等价于求两个数的和,然后看这个和的相反数是否在nums里面. 但是 T_T这样的话复杂度太高了,会超时,捂脸,最后三 ...

  4. Java实现 LeetCode 15 三数之和

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

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

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

  6. LeetCode 15三数之和16最接近的三数之和

    三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...

  7. Leetcode 15.三数之和

    Time: 20190920 Type: Medium 题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所 ...

  8. Leetcode 15:三数之和(最详细解决方案!!!)

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

  9. 2021-5-11 Leetcode 15.三数之和

    1.1我的解法以及考虑到的几点问题 1)数组长度小于3的不用考虑,直接返回 2)暴力法:每一次查找不是自己选择的数字,看一下能否凑成零(但是这样不知道如何去重) 3)拆成一个数字+LC 1.两数之和的 ...

最新文章

  1. 给博客园添加文章自动目录
  2. .net 将html写成的table 转换成excel_如何使用Pandas将二维表(DataFrame)反转为一维列表?...
  3. 电脑运行adb闪退_adb+python进阶使用
  4. jsp中设置自动换行_办公技巧—Word中如何设置自动生成序号
  5. har文件解析工具_嵌入式MCU也能跑AI?STM32 Cube.AI工具包使用初探
  6. 用swing开发 震撼的CSDN用户关系图(转)和基于JMF的java rpg入门游戏
  7. 2015年阿里巴巴1688.com实名供应商数据84万
  8. js 复制div文本
  9. win10台式机,耳机插入没有声音
  10. html如何将汉字转换成英文,中文字体转化为英文或转码
  11. 将心比心,你的人生道路才会更宽广
  12. 1、马克思主义哲学是科学的世界观和方法论
  13. Android系统中固件崩溃后使用uevent机制重新加载固件 流程分析
  14. 面试时被问“你的缺点是什么?”,这么答就对了
  15. 4G/5G图传-实时回传-公网对接-GPS北斗定位-轨迹回放移动视频终端,出口俄罗斯
  16. 嵌入式 课程设计指导书
  17. 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)
  18. 老牛知点所以然-Linux(Ubuntu)配置安卓开发环境及过程中常见问题解决
  19. 关于攻防对抗中有源诱饵的一些论文
  20. C#下基于vlc的视频播放功能开发

热门文章

  1. SQL Server:查找周开始和结束日期时间
  2. cf卡序列号修改工具_王者荣耀无需Root修改荣耀战区软件和方法分享 全国地区可任意修改...
  3. redis 自增_坏了,Redis的字符串类型竟然被张三学明白了?
  4. c 语言中out的作用,C语言outData+是什么意思做什么用?
  5. select下拉框怎么去掉空白_行业词库:网站长尾关键词优化怎么做呢?
  6. c++ enum 给定类型_在 Rust 中创建 C/C++ API
  7. python中unicode函数_中文字符 unicode转utf-8函数 python实现
  8. css 设置背景图片铺满固定不动
  9. 500内部privoxy错误_【热议】喝崂山啤酒中奖500听,却只能兑换500毫升?!
  10. html字体颜色选择插件,css3改变选择文本背景颜色