首页 > 代码库 > LeetCode--3Sum
LeetCode--3Sum
类似于2sum,先排序,然后从左开始遍历,计算a[i]后面的等于-a[i]的两个元素,
注意去除重复元素
1 class Solution { 2 public: 3 vector<vector<int> > threeSum(vector<int> &num) { 4 vector<vector<int> > res; 5 sort(num.begin(),num.end()); 6 int n = num.size(); 7 for(int i = 0 ; i < n-2 ; ++i){ 8 if(i > 0 && (num[i] == num[i-1])){ 9 continue;10 }11 int target = -num[i];12 int left = i+1;13 int right = n-1;14 while(left < right){15 if(target == num[left] + num[right]){16 vector<int> triplet;17 triplet.push_back(num[i]);18 triplet.push_back(num[left]);19 triplet.push_back(num[right]);20 res.push_back(triplet);21 left++;22 while((left < right) && (num[left] == num[left-1])){23 left++;24 }25 right--;26 while((right > left) && (num[right] == num[right+1])){27 right--;28 }29 }30 else if(target > num[left] + num[right]){31 left++;32 while((left < right) && (num[left] == num[left-1])){33 left++;34 }35 }36 else{37 right--;38 while((right > left) && (num[right] == num[right+1])){39 right--;40 }41 }42 }43 }44 return res;45 }46 };
LeetCode--3Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。