链接:https://leetcode-cn.com/problems/continuous-subarray-sum/
使用Hashmap,从第一个元素开始,将数组的部分和(模k)放入map中,寻找k-此部分和是否已在map中出现。注意要判断一下子数组元素是否至少为2。
java代码:
class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
Map<Integer,Integer> map = new HashMap<>();
map.put(0,-1);
int sum = 0;
for(int i = 0;i<nums.length;i++)
{
sum+=nums[i];
if(k!=0)
sum = sum%k;
if(map.containsKey(sum)&&i-map.get(sum)>1)
return true;
else if(!map.containsKey(sum))
map.put(sum,i);
}
return false;
}
}