class Solution {
//要去掉重複的三元組
public:
vector<vector<int>> threeSum(vector<int>& nums) {
int target;
vector<vector<int>> ans;
sort( nums.begin(),nums.end() ); //將所給的數據排序
for(int i = 0 ; i < nums.size(); i++){
int l = i + 1, r = nums.size() - 1; target = nums[i];
if (i > 0 && nums[i] == nums[i - 1]) continue; //去重
while(l < r){
if(nums[l] + nums[r] + target < 0) l++;
else if(nums[l] + nums[r] + target > 0) r--;
else{
ans.push_back({target,nums[l],nums[r]});
l++; r--;
while (l < r && nums[l] == nums[l - 1]) l++;//去重
while (l < r && nums[r] == nums[r + 1]) r--;//去重
}
}
}
return ans;
}
};
leetcode六月每日一題 leetcode15(雙指針)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.