leetcode 3Sum 3Sum Closest 4Sum
来源:互联网 发布:js获取当前设备类型 编辑:程序博客网 时间:2024/04/28 11:50
这几个题很典型也是国外一些知名公司经常会问到的题
3Sum:
排序,避免重复,时间复杂度O(n^2)
class Solution {public: vector<vector<int> > threeSum(vector<int> &num) { int len=num.size(); sort(num.begin(),num.begin()+len); vector<vector<int> > ret; ret.clear(); if(len<3) return ret; for(int i=0;i<len;i++) { if(i>0&&num[i]==num[i-1]) continue; int j=i+1,k=len-1; while(j<k) { if(j>i+1&&num[j]==num[j-1]) { j++; continue; } if(k<len-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> tmp; tmp.push_back(num[i]); tmp.push_back(num[j]); tmp.push_back(num[k]); ret.push_back(tmp); j++; } } } return ret; }};
class Solution {
public:
int threeSumClosest(vector<int> &num, int target) {
int len =num.size();
int ret;
sort(num.begin(),num.end());
int i,j,k;
int first=true;
for(int i=0;i<len;i++)
{
j=i+1;
k=len-1;
while(j<k)
{
int sum=num[i]+num[j]+num[k];
if(first)
{
ret=sum;
first=false;
}
else
{
if(abs(ret-target)>abs(sum-target))
ret=sum;
}
if(ret==target)
return ret;
if(sum<target)
j++;
else
k--;
}
}
return ret;
}
};
4Sum:在3sum的基础上再添加一维,时间复杂度变为O(n^3)
class Solution {
public:
vector<vector<int> > fourSum(vector<int> &num, int target) {
int len=num.size();
vector<vector<int> > ret;
sort(num.begin(),num.end());
for(int i=0;i<len;i++)
{
if(i!=0&&num[i]==num[i-1])
continue;
for(int j=i+1;j<len;j++)
{
if(j>i+1 && num[j]==num[j-1])
{
continue;
}
int a=j+1;
int b=len-1;
while(a<b)
{
if(a!=j+1 && num[a]==num[a-1])
{
a++;
continue;
}
if(b!=len-1 && num[b]==num[b+1])
{
b--;
continue;
}
int sum=num[i]+num[j]+num[a]+num[b];
if(sum==target)
{
vector<int> temp;
temp.push_back(num[i]);
temp.push_back(num[j]);
temp.push_back(num[a]);
temp.push_back(num[b]);
ret.push_back(temp);
a++;
b--;
}
else if(sum>target)
{
b--;
}
else
{
a++;
}
}
}
}
return ret;
}
};
- 【Leetcode】3Sum Closest (Sum)
- leetcode 3sum closest && 4sum
- 【LeetCode】3Sum && 3Sum Closest && 4Sum
- leetcode 3Sum 3Sum Closest 4Sum
- LeetCode OJ - 3Sum、3Sum Closest、4Sum
- LeetCode 3Sum&&3Sum Closest&&4Sum
- LeetCode:3Sum, 3Sum Closest, 4Sum
- LeetCode: 3 Sum Closest
- leetcode - 3 sum closest
- leetcode 3Sum Closest
- LeetCode: 3Sum Closest
- [Leetcode]3Sum Closest
- Leetcode: 3SUM Closest
- LeetCode 3Sum Closest
- [Leetcode] 3Sum Closest
- LeetCode : 3Sum Closest
- LeetCode 3Sum Closest
- [LeetCode] 3Sum Closest
- 云计算与大数据的价值
- getText()之For input string:""
- 用grub4dos安装Windows7、Ubuntu 12.10双系统
- 数据结构——算法之(005)(判断字符串是否是对称的即(回文字符串))
- java 反射提取类信息, 动态代理 和过滤某些方法演示
- leetcode 3Sum 3Sum Closest 4Sum
- 不可不读的百句良言!!
- MFC 滚动条 CSCROLLVIEW的使用
- Linux一些问题的解决方法
- 输入一个正数n,输出所有和为n 连续正数序列
- 二进制数据
- wifi无线信号传输衰减和距离的关系公式[室内定位]
- lingo教程1
- 人生值得珍藏的80句话!