本文共 1045 字,大约阅读时间需要 3 分钟。
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
class Solution { public: vector> threeSum(vector & nums) { vector > res; if(nums.size() < 3) return res; sort(nums.begin(),nums.end()); for(int i=0;i =1 && nums[i]==nums[i-1]) continue; int ass=nums[i]; if(ass > 0) break; int left=i+1; int right=nums.size()-1; while(left < right){ if(ass + nums[left] + nums[right] < 0) left++; else if(ass + nums[left] + nums[right] > 0) right--; else{ res.push_back({ ass,nums[left],nums[right]}); left++; right--; while(left < right && nums[left]==nums[left-1]) left++; while(left < right && nums[right]==nums[right+1]) right--; } } } return res; }};
通过时间:
转载地址:http://hnemb.baihongyu.com/