美文网首页
523. Continuous Subarray Sum

523. Continuous Subarray Sum

作者: 尚无花名 | 来源:发表于2019-04-22 10:50 被阅读0次

    这题不难,但很容易出错。
    它的corner case是k等于0的时候。
    当k等于0的时候, 不能做 mod 了,要处理这种case
    还有一个corner case是什么时候把prefix sum放进去。
    应该是在每个i的结尾放进去(判断contains之后)
    在第一个i时结尾放0进去,代表没有数时和为0.

    class Solution {
        public boolean checkSubarraySum(int[] nums, int k) {
            int N = nums.length;
            
            Set<Integer> appeared = new HashSet<>();
            int sum = 0;
            int prev = 0;
            for (int i = 0; i < N; i++) {
                sum += nums[i];
                if (k != 0) sum %= k;
                if (i != 0) {
                    if (appeared.contains(sum)) return true;
                }
                appeared.add(prev);
                prev = sum;
            }
            return false;
        }
    }
    

    相关文章

      网友评论

          本文标题:523. Continuous Subarray Sum

          本文链接:https://www.haomeiwen.com/subject/yvaegqtx.html