【LeetCode】3Sum
来源:互联网 发布:人工翻译软件 编辑:程序博客网 时间:2024/06/07 19:48
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.
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)
思路:先排序,然后从0到n-1开始遍历,从第i个之后找到两个数和i相加得到0,分别从i+1个元素往后递加,已经从最后一个元素往前找,最终完成搜索。
class Solution { public: vector<vector<int> > threeSum(vector<int> &num) {int nsize=num.size(),sum;vector<vector<int> > vvi;vvi.clear();if(nsize<3)return vvi;vector<int> tmp;sort(num.begin(),num.end());int i,j,k=nsize-1;for(i=0;i<nsize-2;i++){if(i > 0 && num[i]==num[i-1]) continue; sum=-num[i];j=i+1;k=nsize-1;for(;j<k;){if(j>i+1&&num[j]==num[j-1]){ j++; continue; } if(k<num.size()-1&& num[k]==num[k+1]){ k--; continue; } if(num[j]+num[k]>sum)k--;else if(num[j]+num[k]<sum)j++;else {tmp.push_back(num[i]);tmp.push_back(num[j]);tmp.push_back(num[k]);vvi.push_back(tmp);tmp.clear();j++;}}}return vvi;}};
0 0
- 【Leetcode】3Sum (Sum)
- Leetcode:2Sum,3Sum
- 【Leetcode】3Sum Closest (Sum)
- leetcode 2 sum 3sum 4sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm closet
- [LeetCode] K sum(2Sum、3Sum、4Sum)
- leetcode--sum集合:2sum,3sum,4sum
- leetcode --- 2 sum , 3 sum , 4 sum , k sum problem
- LeetCode: 3Sum
- LeetCode: 3 Sum Closest
- leetcode - 3 Sum
- leetcode - 3 sum closest
- leetcode 3Sum
- leetcode 3Sum Closest
- LeetCode: 3Sum
- 第八周项目1-实现复数类中的运算符重载(类的成员函数)
- 资讯类网站
- 怎么让后添加的activity最先运行
- OFBIZ--对数据库的操作
- ASP.NET Web API 配置返回的json字段的格式以及Action返回HttpResponseMessage类型
- 【LeetCode】3Sum
- Android 百度地图定位
- POJ 1269 Intersecting Lines
- CentOS6.3安装samba服务,配置匿名访问
- 美国州名英文,介绍美国各州名缩写,50个州名简写和简称及其首府名
- Linux教程之Linux cd命令
- 我的世界
- Android TextWatcher监控EditText中的输入内容并限制其输入字符个数
- Ipad的照片误删了还能找回吗