1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res if(nums.size() < 3) return res sort(nums.begin(), nums()) const int target = 0 auto last = nums() for(auto i = nums.begin(); i < last - 2 if(i > nums.begin() && *i == *(i - 1)) continue auto j = i + 1 auto k = last - 1 while(j < k) { if(*i + *j + *k < target) { ++j; while(*j == *(j-1) && j < k) ++j; }else if(*i + *j + *k > target) { --k while(*k == *(k+1) && j < k) --k }else { res.push_back({*i, *j, *k}) ++j; --k while(*j == *(j-1) && j < k) ++j; while(*k == *(k+1) && j < k) --k } } } return res } }
|
近期评论