leetcode六月每日一題 leetcode15(雙指針)

在這裏插入圖片描述

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;
        
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章