leetcode 第15-16题 3Sum & 3Sum Closest
来源:互联网 发布:python 数学库 开平方 编辑:程序博客网 时间:2024/06/05 16:43
3Sum这道题的思路可以将 2sum的思路进行扩展,即将3个数的和看成一个是-target ,然后去找何为target的另外两个数,该题需要注意的一个问题就是判重,即相同的解取一次即可,需要在取值的时候每次做一次判断。
class Solution {
public:
vector<vector<int> > threeSum(vector<int> &num) {
int len =num.size();
vector <vector<int> >ans;
ans.clear();
//cout<<len<<endl;
sort(num.begin(),num.end());
for(int i=0;i<len;i++){
if(i > 0 && num[i]==num[i-1])
continue;
int k=len-1;
for(int j=i+1;j<k;){
if((j>i+1)&&num[j-1]==num[j]){j++;continue;}
if(k<num.size()-1&& num[k]==num[k+1]){
k--;continue;
}
int sum=num[i]+num[j]+num[k];
if(sum>0)k--;
else if(sum<0)j++;
else{
vector<int >s;
s.push_back(num[i]);
s.push_back(num[j]);
s.push_back(num[k]);
ans.push_back(s);
j++;
}
}
}
return ans;
}
};
//3Sum Closest只需要对上题的代码稍加修改,每次记录求和的最接近target的值即是所求的解。
class Solution {
public:
int threeSumClosest(vector<int> &num, int target) {
int len =num.size();
int temp=0x7fffffff;
sort(num.begin(),num.end());
for(int i=0;i<len;i++){
if(i > 0 && num[i]==num[i-1])
continue;
int k=len-1;
for(int j=i+1;j<k;){
if((j>i+1)&&num[j-1]==num[j]){j++;continue;}
if(k<num.size()-1&& num[k]==num[k+1]){
k--;continue;
}
int sum=num[i]+num[j]+num[k]-target;
if(abs(sum)<abs(temp))temp=sum;
if(sum>0)k--;
else if(sum<0)j++;
else{
return target;
}
}
}
return target+temp;
}
};
- leetcode 第15-16题 3Sum & 3Sum Closest
- 【leetcode】第16题:3Sum Closest
- leetcode 第16题 3Sum Closest
- 【LeetCode】LeetCode——第16题:3Sum Closest
- leetcode第16题——**3Sum Closest
- 【Leetcode】3Sum Closest (Sum)
- LeetCode 16: 3Sum Closest
- LeetCode 16: 3Sum Closest
- leetcode 16 3Sum Closest
- [leetcode 16] 3Sum Closest
- Leetcode【16】:3Sum Closest
- [leetcode 16] 3Sum Closest
- [Leetcode] 16 - 3Sum Closest
- leetcode.16----------3Sum Closest
- leetcode 16 3Sum Closest
- leetcode-16 3Sum closest
- LeetCode---(16) 3 Sum Closest
- LeetCode 16 - 3Sum Closest
- Unity学习笔记3 简易2D横版RPG游戏制作(三)
- 【ORACLE】ORACLE 12c PDB 基础
- 关于对话框和控件问题
- 安卓多Activity关闭方法和Tabhost使用过程的Activity数据刷新
- linux下如何编译运行c程序
- leetcode 第15-16题 3Sum & 3Sum Closest
- cookie 记住浏览历史
- win32项目和win32控制台程序的区别
- Myeclipse svn 安装
- JSF2.0实战 - 4、自定义组件
- CSS :first-child 选择器
- CSS 子元素选择器
- 抽象类
- 最小生成树变形uva534