[LeetCode] Three Sum
注意Two sum的思路是使用hashmap
class Solution {
public:
vector<vector<int>> threeSum(vector<int>& nums) {
sort(nums.begin(),nums.end());
vector<vector<int>> vv;
int n = nums.size();
for(int i = 0; i<n; ++i){
int front = i+1;
int rear = n-1;
while(front<rear){
int sum = nums[i]+nums[front]+nums[rear];
vector<int> v3(3);
if(sum>0)
--rear;
else if(sum<0)
++front;
else{
v3[0]=nums[i];
v3[1]=nums[front];
v3[2]=nums[rear];
vv.push_back(v3);
while(front<rear&&nums[front]==v3[1]) ++front;
while(front<rear&&nums[rear]==v3[2]) --rear;
}
}
while(i<n-1&&nums[i]==nums[i+1]) ++i;
}
return vv;
}
};
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: SumThree
- 下一篇: jstl判断List是否为空