LeetCode每日一题 (34) 18. 四数之和

18. 四数之和


在这里插入图片描述


class Solution {
    
    
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
    
    
        vector<vector<int>> result;
        vector<int> tempresult;
        sort(nums.begin(),nums.end()); // 排序
        Search(nums,target,0,4,tempresult,result);
        return result;
    }
    void Search(vector<int>& nums,int target,int start,int count,vector<int> &tempresult,vector<vector<int>> &result){
    
    
        if(target==0&&count==0){
    
     // 剩余需要值为零,剩余需要个数为零(结果ok)
            result.push_back(tempresult);
            return;
        }
        if(count==0) return; // 剩余个数为零了 ,还没找到,个数超过了,结束
        for(int i=start;i<nums.size();i++){
    
    
            if((nums[i]>target&&nums[i]>0)) return;
            if(i==start||nums[i]!=nums[i-1]){
    
    
                tempresult.push_back(nums[i]);
                Search(nums,target-nums[i],i+1,count-1,tempresult,result);
                tempresult.pop_back();
            }
        }
    }
};

在这里插入图片描述


猜你喜欢

转载自blog.csdn.net/qq_45021180/article/details/108955055