Array Leetcode :Medium

216. Combination Sum III

https://leetcode.com/problems/combination-sum-iii/

class Solution {
private:
    vector<vector<int>>res;
public:
    vector<vector<int>> combinationSum3(int k, int n) {
        vector<int>nums;
        combination(nums,k,n,1);
        return res;
    }
    void combination(vector<int> &nums,int k,int n,int t){
        if(k<=0 || n<=0){
            if(k==0 && n==0) res.push_back(nums);
            else return;
        }
        for(int i=t;i<=9;i++){
            nums.push_back(i);
            combination(nums,k-1,n-i,i+1);
            nums.pop_back();
        }
    }
};

209. Minimum Size Subarray Sum

https://leetcode.com/problems/minimum-size-subarray-sum/

class Solution {
public:
    int minSubArrayLen(int s, vector<int>& nums) {
        int len = nums.size(), start = 0, sum = 0;
        int minlen = len+1;
        for (int i = 0; i < len; i++) { 
            sum += nums[i]; 
            while (sum >= s) {
                minlen = min(minlen, i - start + 1);
                sum -= nums[start++];
            }
        }
        return minlen == len+1 ? 0 : minlen;
    }
};


18. 4Sum

https://leetcode.com/problems/4sum/

class Solution {
private:
    vector<vector<int>>res;
public:
    vector<vector<int>> fourSum(vector<int>& nums, int target) {
        int len = nums.size();
        sort(nums.begin(),nums.end());
        for(int i=0;i<len;i++){
            while(i>0&&nums[i]==nums[i-1]&&i<len) i++;
            for(int j=i+1;j<len;j++){
                while(j>i+1&&nums[j]==nums[j-1]&&j<len)j++;
                int k=j+1,l=len-1;
                while(k<l){
                    while(k>j+1 && nums[k]==nums[k-1] && k<l)k++;
                    while(l<len-1 && nums[l]==nums[l+1] && k<l)l--;
                    if(k==l)continue;
                    if(nums[i]+nums[j]+nums[k]+nums[l]==target){
                        res.push_back({nums[i],nums[j],nums[k],nums[l]});
                        k++;
                    }
                    else if(nums[i]+nums[j]+nums[k]+nums[l]>target)
                        l--;
                    else
                        k++;
                }
            }
        }
        return res;
    }
};












你可能感兴趣的:(Array Leetcode :Medium)