您的位置:首页 > 其它

Leetcode 15. 3Sum

2016-03-17 21:08 260 查看
//开始想用hash,后来发现还是超时了,于是还是考虑排序后计算,反正
//不可能比n平方更短,所以排序对于世界上来首无所谓
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
vector<vector<int>> v;
if(nums.size()<3) return v;
sort(nums.begin(),nums.end());
for(int i=0;i<nums.size()-2;i++)
{
if(nums[i]>0) break;
if(i!=0&&nums[i]==nums[i-1]) continue;
for(int j=i+1,k=nums.size()-1;j<k;)
{
if(nums[k]<0) break;
if(nums[i]+nums[j]+nums[k]==0)
{
v.push_back({nums[i],nums[j],nums[k]});
while(j<k&&nums[j+1]==nums[j]) j++;
while(j<k&&nums[k-1]==nums[k]) k--;
j++;
k--;

}
else if(nums[i]+nums[j]+nums[k]<0) j++;
else k--;
}
}
return v;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: