每日一题
测试样例真的让人恼火,不想说了…直接上图
这题不是纯恶心人?
直接上官方正解了,博主自己的暴力for循环超时了…
class Solution {
public boolean checkSubarraySum(int[] nums, int k) {
int m = nums.length;
if (m < 2) {
return false;
}
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(0, -1);
int remainder = 0;
for (int i = 0; i < m; i++) {
remainder = (remainder + nums[i]) % k;//同余定理
if (map.containsKey(remainder)) {
int prevIndex = map.get(remainder);
if (i - prevIndex >= 2) {
return true;
}
} else {
map.put(remainder, i);
}
}
return false;
}
}
最开始我的思路是前缀和hash
但这个用hashmap的精妙之处就是使用了同余定理…技不如人继续努力