1. 程式人生 > 其它 >【LeetCode】15. 三數之和

【LeetCode】15. 三數之和

class Solution{
public:
    vector<vector<int>> threeSum(vector<int>& nums)
    {
        sort(nums.begin(),nums.end());
        vector<vector<int>> ans;
        for(int k=0;k<nums.size();++k)
        {
            if(k>0&&nums[k]==nums[k-1])
                
continue; //去重 int i=k+1,j=nums.size()-1; while(i<j) { if(nums[i]+nums[j]==-nums[k]) { ans.push_back(vector<int>{nums[k],nums[i],nums[j]}); ++i,--j; while(i<j&&nums[i-1
]==nums[i]) ++i;//去重 while(i<j&&nums[j]==nums[j+1]) --j;//去重 } else if(nums[i]+nums[j]<-nums[k]) { ++i; //雙指標,當和小於0時,左邊指標向右移動 }
else { --j; //當和大於0時,右邊指標向左移動 } } } return ans; } };