题解:Continuous Subarray Sum

来源:互联网 发布:win10网络凭证 编辑:程序博客网 时间:2024/06/05 05:15

题目:

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.

直接循环求解即可,注意k=0的情况分开讨论

bool checkSubarraySum(vector<int>& nums, int k) {for (int i = 0; i < nums.size() - 1; i++) {int sum = nums[i];for (int l = i + 1; l < nums.size(); l++) {sum += nums[l];if (k == 0) {if (sum == 0)return true;elsereturn false;}else if (sum % k == 0)return true;}}return false;}


0 0