LeetCode-15. 三數之和
阿新 • • 發佈:2018-12-08
題目地址:https://leetcode-cn.com/problems/3sum/
題意:找出不重複的所有的三數之和為0的組合。
思路:排序,列舉第一位,雙指標掃剩下的部分,複雜度O(n^2)
AC程式碼:
class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>>ans; int n = nums.size(); sort(nums.begin(),nums.end()); for(int i=0;i<n-2;i++){ if(i!=0 && nums[i] == nums[i-1]) continue; if(nums[i]+nums[i+1]+nums[i+2]>0) break; if(nums[i]+nums[n-1]+nums[n-2]<0) continue; int l = i+1; int r = n-1; int pre = 0x3f3f3f3f; while(l<r){ if(nums[l] == pre){ l++; continue; } int sum = nums[l] + nums[r]; if(sum+nums[i]>0) r--; else if(sum+nums[i]<0) l++; else{ vector<int>temp; temp.push_back(nums[i]); temp.push_back(nums[l]); temp.push_back(nums[r]); ans.push_back(temp); pre = nums[l]; l++; r--; } } } return ans; } };