【Leetcode】523. Continuous Subarray Sum

【Leetcode】523. Continuous Subarray Sum_第1张图片

1 如果sum[i]和sum[j] mod k的值相等,则num(i, j] mod k的值肯定等于0

2 sum是k的n倍的话,说明sum mod k等于0

3 将累计结果mod k的余数存入hashmap中,同时需要存当前位置,其中位置为key,mod后的余数为value

4 每次遍历的时候,计算mod值,看hashmap中是否存在,如果存在,则返回False

5 特别要注意corner case,也就是从第一个开始到当前的sum mod k=0的话,也是可以的,所以需要初始化hashmap为dic[-1]=0

6 要特别考虑k==0的情况,如果array长度大于等于2,而且有任何一对连续0,都可以返回True


【Leetcode】523. Continuous Subarray Sum_第2张图片


【Leetcode】523. Continuous Subarray Sum_第3张图片

这里的else必须加



【Leetcode】523. Continuous Subarray Sum_第4张图片

1 这里一定要注意要先写前面那个条件,只有key在dic中,才能再判断下面的

2 对于0的判断还是忽略了

3 重要思想:key中存的是sum的模,因为两个sum对k的模相等的话,则中间的和必定是k的倍数


【Leetcode】523. Continuous Subarray Sum_第5张图片

3刷出了点小错误,红框中这么写就是错误的


【Leetcode】523. Continuous Subarray Sum_第6张图片

1 上述涉及到一个逻辑错误,当i-dic[remain]==1的时候不要更新map,只有当remain不在的时候才更新


【Leetcode】523. Continuous Subarray Sum_第7张图片

要注意判断k为0的时候


【Leetcode】523. Continuous Subarray Sum_第8张图片

你可能感兴趣的:(【Leetcode】523. Continuous Subarray Sum)