题解 | #牛牛的三元组问题#
牛牛的三元组问题
https://www.nowcoder.com/practice/72c6d735fb1144a2ba162976a4510839
#include <unordered_map> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型vector<vector<>> */ vector<vector<int> > findTriplets(vector<int>& nums) { sort(nums.begin(),nums.end()); map<vector<int>,int> m; vector<vector<int>> ans; for(int i = 0; i < nums.size(); i++){ int left = i + 1; int right = nums.size() - 1; while(left < right){ if(nums[i] + nums[left] + nums[right] == 0){ vector<int> v = {nums[i],nums[left],nums[right]}; if(m.find(v) == m.end()){ ans.emplace_back(v); m[v] = 1; } while(left + 1 < right && nums[left + 1] == nums[left]){ left++; } while(right - 1 > left && nums[right] == nums[right - 1]){ right--; } left++; right--; } else if(nums[i] + nums[left] + nums[right] < 0){ left++; }else{ right--; } } } return ans; } };