题目描述: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意: 答案中不可以包含重复的三元组。
参考代码:
/// 三数之和
class Solution1 {
public:
vector> threeSum(vector& nums) {
vector> result;
//排序
sort(nums.begin(),nums.end());
if (nums.size() == 0) {
return result;
}
for (int i = 0; i< nums.size(); i++) {
int left = i+1;
int right = nums.size()-1;
if (nums[i] > 0) {
break;
}
if (i>0&&nums[i-1] == nums[i]) {
continue;
}
while (left < right) {
if (nums[i] + nums[left] + nums[right] == 0) {
vector item = {nums[i],nums[left],nums[right]};
result.push_back(item);
while (left + 1 < right &&nums[left] == nums[left+1]) {
left ++;
}
while (right - 1 >left &&nums[right] == nums[right-1]) {
right--;
}
left++;
right--;
} else if (nums[i] + nums[left] + nums[right] > 0 ) {
right--;
} else {
left ++;
}
}
}
return result;
}
};