1 static int wing=[]() 2 { 3 std::ios::sync_with_stdio(false); 4 cin.tie(NULL); 5 return 0; 6 }(); 7 8 class Solution 9 {10 public:11 vector> threeSum(vector & nums) 12 {13 vector > res;14 int sz=nums.size();15 sort(nums.begin(),nums.end());16 int target,left,right,sum;17 for(int i=0;i 0)20 break;21 if(i>0&&nums[i-1]==nums[i])22 continue;23 target=-nums[i];24 left=i+1;25 right=sz-1;26 while(left
先排序,以一个元素为扫描基准,在该元素右侧查找两个元素,使得这两个元素的和为当前扫描元素的相反数。将三和问题转化为二和问题,时间复杂度O(n²)