3Sum
来源:互联网 发布:网络推广博客 编辑:程序博客网 时间:2024/06/06 02:29
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
The solution set must not contain duplicate triplets.
For example, given array S = {-1 0 1 2 -1 -4},
A solution set is:
(-1, 0, 1)
Note:
Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)The solution set must not contain duplicate triplets.
For example, given array S = {-1 0 1 2 -1 -4},
A solution set is:
(-1, 0, 1)
(-1, -1, 2)
描述:在一个数组中找到3个数的和为0的所有集合。
解决思路:将数组sort后可以是的所有的元素为升序的。而后对于每一个元素nums[i],在其后的元素中求连个元素的和为-nums[i]。
(1)对于一个nums[i],可能有多个和为-nums[i]的组合。每次遍历的开始pointer为i+1,结束pointer为nums.size()-1.
(2)对于一个数nums[i],如果i>0&&nums[i]==nums[i-1],则和等于-nums[i]的情况已经处理,直接跳过。
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; sort(nums.begin(),nums.end()); int target,left,right; for(int i=0;i<nums.size();i++) { if(i>0&&nums[i] == nums[i-1]) continue; target = -nums[i]; left = i+1; right = nums.size()-1; while(left < right) { int sum=nums[left]+nums[right]; if(sum==target) { vector<int>tmp; tmp.push_back(nums[i]); tmp.push_back(nums[left]); tmp.push_back(nums[right]); res.push_back(tmp); while(++left<right&&nums[left]==nums[left-1]);//去掉重复的部分情况 while(left<--right&&nums[right]==nums[right+1]); } else if(sum<target) { left++; } else { right--; } } } return res; }};
0 0
- Two Sum && 3 Sum
- 【Leetcode】3Sum (Sum)
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 3sum、3Sum closet、 4sum
- 3Sum, 3Sum Closest, 4 Sum
- leetcode 2 sum 3sum 4sum
- 2Sum 3Sum 4Sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- 3Sum
- 3SUM
- 3-sum
- 3Sum
- 3Sum
- 3Sum
- 3Sum
- nyoj 542 试 制 品
- H5开发遇到的问题整理
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL 完美解决
- 创业沙拉北京站亲历记
- HTML5——响应式布局
- 3Sum
- Failed to find 'ANDROID_HOME' environment variable
- 30个php操作redis常用方法代码例子
- 如何在VS2010中更好的编写JavaScript代码
- IDF实验室 摩斯密码
- linux mysql 官方编译好的二进制包安装
- shareSDK分享遇到的坑
- C++:实现split分割字符串
- 常用神经网络