[Leetcode 15]三数之和 3 Sum
【题目】
Given an array nums
of n integers, are there elements a, b, c 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相关推荐
- [双指针|模拟] leetcode 15 三数之和
[双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...
- LeetCode 15. 三数之和(3Sum)
15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...
- LeetCode 15. 三数之和
题目描述 15. 三数之和 思路 思路1 比较容易想到的就是,求三数之和等于0,可以等价于求两个数的和,然后看这个和的相反数是否在nums里面. 但是 T_T这样的话复杂度太高了,会超时,捂脸,最后三 ...
- Java实现 LeetCode 15 三数之和
15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...
- LeetCode 15. 三数之和【双指针】
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...
- LeetCode 15三数之和16最接近的三数之和
三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...
- Leetcode 15.三数之和
Time: 20190920 Type: Medium 题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所 ...
- Leetcode 15:三数之和(最详细解决方案!!!)
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. **注意:**答案中不可以包含重 ...
- 2021-5-11 Leetcode 15.三数之和
1.1我的解法以及考虑到的几点问题 1)数组长度小于3的不用考虑,直接返回 2)暴力法:每一次查找不是自己选择的数字,看一下能否凑成零(但是这样不知道如何去重) 3)拆成一个数字+LC 1.两数之和的 ...
最新文章
- 给博客园添加文章自动目录
- .net 将html写成的table 转换成excel_如何使用Pandas将二维表(DataFrame)反转为一维列表?...
- 电脑运行adb闪退_adb+python进阶使用
- jsp中设置自动换行_办公技巧—Word中如何设置自动生成序号
- har文件解析工具_嵌入式MCU也能跑AI?STM32 Cube.AI工具包使用初探
- 用swing开发 震撼的CSDN用户关系图(转)和基于JMF的java rpg入门游戏
- 2015年阿里巴巴1688.com实名供应商数据84万
- js 复制div文本
- win10台式机,耳机插入没有声音
- html如何将汉字转换成英文,中文字体转化为英文或转码
- 将心比心,你的人生道路才会更宽广
- 1、马克思主义哲学是科学的世界观和方法论
- Android系统中固件崩溃后使用uevent机制重新加载固件 流程分析
- 面试时被问“你的缺点是什么?”,这么答就对了
- 4G/5G图传-实时回传-公网对接-GPS北斗定位-轨迹回放移动视频终端,出口俄罗斯
- 嵌入式 课程设计指导书
- 同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)
- 老牛知点所以然-Linux(Ubuntu)配置安卓开发环境及过程中常见问题解决
- 关于攻防对抗中有源诱饵的一些论文
- C#下基于vlc的视频播放功能开发
热门文章
- SQL Server:查找周开始和结束日期时间
- cf卡序列号修改工具_王者荣耀无需Root修改荣耀战区软件和方法分享 全国地区可任意修改...
- redis 自增_坏了,Redis的字符串类型竟然被张三学明白了?
- c 语言中out的作用,C语言outData+是什么意思做什么用?
- select下拉框怎么去掉空白_行业词库:网站长尾关键词优化怎么做呢?
- c++ enum 给定类型_在 Rust 中创建 C/C++ API
- python中unicode函数_中文字符 unicode转utf-8函数 python实现
- css 设置背景图片铺满固定不动
- 500内部privoxy错误_【热议】喝崂山啤酒中奖500听,却只能兑换500毫升?!
- html字体颜色选择插件,css3改变选择文本背景颜色