Continuous Subarray Sum
问题描述:给定一个数组nums,其中只有正数,和一个整数k,给出是否存在一个最小长度为2的连续的子数组能够被K整除。
算法描述:虽然归类为DP,但是最后用的是贪心算法来做,对于每一个i,都从i到0再遍历一遍,因为需要是连续并且最小长度为2的,所以需要从i-1开始遍历,计算j到i加起来能否整除k。
以下是代码:
class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k) {
int temp = accumulate(nums.begin(), nums.end(), 0);
if(!temp && nums.size() > 1) return true;
if(!k) return false;
for (int i = 1; i < nums.size(); i++) {
int sum = nums[i];
for (int j = i - 1; j >= 0; j--) {
sum += nums[j];
if(sum % k == 0) return true;
}
}
return false;
}
};