Проблема: Учитывая список неотрицательных чисел и целое целое число k, напишите функцию, чтобы проверить, имеет ли массив непрерывный подмассив размером не менее 2, который суммирует с кратным k, то есть суммируетв n * k, где n также является целым числом.
Пример 1:
Вход: [23, 2, 4, 6, 7], k = 6 Выход: True
Объяснение: Поскольку [2, 4] является непрерывным подрешеткой размера 2 и суммирует до 6.
Пример 2:
Ввод: [23, 2, 6, 4, 7], k = 6 Вывод: True
Объяснение: Поскольку [23, 2, 6, 4, 7] является непрерывным подрешеткой размера 5 и имеет сумму до 42.
Mycode:
class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
int curSum=nums[0];
int start=0;
int k1=Math.abs(k);
for(int i=1;i<nums.length;i++){
while (curSum>k1 && start<i-1){
curSum = curSum - nums[start];
start++;
}
if(k1>0 && (curSum%k1)==0){
return true;
}
if(curSum==0 && k1==0){
return true;
}
curSum=curSum+nums[i];
}
return false;
}
}
Мое решение не может передать этот вход теста = {0,1,0} k = 0.Мой вывод верный.Ожидаемый результат: Ложь.Как я могу ввести это граничное условие согласно моему коду?
Я следую этому .Но нет ничего, что обсуждает этот тестовый пример.
Заранее спасибо