15. 3Sum

xiaoxiao2021-02-28  34

15. 3Sum

class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res; if(nums.empty()) return res; int n=nums.size(); std::sort(nums.begin(),nums.end()); for(int i=0;i<n-2;i++){ int target=-nums[i],front=i+1,back=n-1; while(front<back){ int sum=nums[front]+nums[back]; if(sum<target) front++; else if(sum>target) back--; else{ vector<int> temp(3,0); temp[0]=nums[i]; temp[1]=nums[front]; temp[2]=nums[back]; res.push_back(temp); while(front<back&&nums[front]==temp[1]) front++; while(front<back&&nums[back]==temp[2]) back--; } } while(i+1<n&&nums[i+1]==nums[i]) i++; } return res; } };
转载请注明原文地址: https://www.6miu.com/read-2630395.html

最新回复(0)