Skip to content

Latest commit

 

History

History
55 lines (50 loc) · 1.18 KB

523.md

File metadata and controls

55 lines (50 loc) · 1.18 KB

523. 连续的子数组和

题目

   给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。

示例:

示例1

输入1:

[23,2,4,6,7], k = 6

输出1:

True

示例2

输入2:

[23,2,6,4,7], k = 6

输出2:

True

题解:

class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k) {
        int size=nums.size();
        if(size==0)return false;

        vector<int> dp(size,0);
        dp[0]=nums[0];
        for(int i=1;i<size;i++){
            dp[i]=dp[i-1]+nums[i];
            if(k!=0&&dp[i]%k==0){
                return true;
            }
            if(k==0&&dp[i]==0){
                return true;
            }
            for(int j=0;j<i-1;j++){
                if(k!=0&&(dp[i]-dp[j])%k==0){
                    return true;
                }
                if(k==0&&(dp[i]-dp[j])==0){
                    return true;
                }
            }
        }
        return false;
    }
};