diff --git a/test006.cpp b/test006.cpp new file mode 100644 index 0000000..e3109f3 --- /dev/null +++ b/test006.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + vector> threeSum(vector& nums) { + // 主要问题还是去重复 + int n = nums.size(); + sort(nums.begin(), nums.end()); + vector> ret; + int preid = -1; + for(int i = 0; i < n; i++){ + if(preid != -1 && nums[i] == nums[preid]) continue; + int l = i + 1, r = n - 1; + while(l < r){ + int sum = nums[i] + nums[l] + nums[r]; + if(sum == 0){ + ret.push_back({nums[l], nums[r], nums[i]}); + int tmp = nums[l]; + while(l < r && nums[l] == tmp) l++; + preid = i; + }else if(sum > 0){ + r--; + }else{ + l++; + } + } + } + return ret; + } +}; \ No newline at end of file