523. Continuous Subarray Sum

来源:互联网 发布:ug编程实例教程零件 编辑:程序博客网 时间:2024/06/05 11:16

  • Continuous Subarray Sum
    • description
    • implementation

523. Continuous Subarray Sum

description

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 the 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=6Output: TrueExplanation: Because [2, 4] is a continuous subarray of size 2 and sums up to 6.Example 2:Input: [23, 2, 6, 4, 7],  k=6Output: TrueExplanation: Because [23, 2, 6, 4, 7] is an continuous subarray of size 5 and sums up to 42.Note: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.

implementation

class Solution {public:    bool checkSubarraySum(vector<int>& nums, int k) {        int size = nums.size();        vector<long long int> cumSum(size + 1, 0);        for(int i = 1; i <= size; i++)             cumSum[i] += cumSum[i-1] + nums[i-1];        for(int i = 2; i <= size; i++) {            for(int j = 0; j < i - 1; j++) {                int diff = cumSum[i] - cumSum[j];                if(k && abs(diff)%k == 0)                      return true;                if(k == 0 && diff == 0)                     return true;            }        }            return false;    }};
0 0
原创粉丝点击