Saturday, August 22, 2020

523. Continuous Subarray Sum ----------M

 Given a list of non-negative numbers and a target integer k, write a function to check if the array has a continuous subarray of size at least 2 that sums up to a multiple of k, that is, sums up to n*k where n is also an integer.

 

Example 1:

Input: [23, 2, 4, 6, 7],  k=6
Output: True
Explanation: Because [2, 4] is a continuous subarray of size 2 and sums up to 6.

Example 2:

Input: [23, 2, 6, 4, 7],  k=6
Output: True
Explanation: Because [23, 2, 6, 4, 7] is an continuous subarray of size 5 and sums up to 42.

 

Constraints:

  • The length of the array won't exceed 10,000.
  • You may assume the sum of all the numbers is in the range of a signed 32-bit integer.


A:

就是一个个地计算出所有的和。一个个检验。


class Solution {
public:
    bool checkSubarraySum(vector<int>& nums, int k) {
        int n = nums.size();
        if(n<2)
            return false;        
        for(int i =1;i<n;i++){
            for(int j=0;j<i;j++ ){                
                nums[j] += nums[i];
                if(k ==0){
                    if(nums[j]==0)
                        return true;
                }else{
                    if(nums[j] %k ==0)
                        return true;
                }
            }
        }
        return false;
    }
};


犯错地点就是: k==0 的时候, 有可能有 nums == [0,0]的情况


No comments:

Post a Comment