523. Continuous Subarray Sum

网友投稿 791 2022-09-04

523. Continuous Subarray Sum

523. Continuous Subarray Sum

Given a list of non-negative numbers and a target integer k, write a function to check if the array has a continuous subarray of size at least 2 that sums up to the multiple of k, that is, sums up to n*k where n is also an integer.

Example 1:

Input: [23, 2, 4, 6, 7], k=6Output: TrueExplanation: Because [2, 4] is a continuous subarray of size 2 and sums up to 6.

Example 2:

Input: [23, 2, 6, 4, 7], k=6Output: TrueExplanation: Because [23, 2, 6, 4, 7] is an continuous subarray of size 5 and sums up to 42.

Note: The length of the array won’t exceed 10,000. You may assume the sum of all the numbers is in the range of a signed 32-bit integer.

思路: 因为是非负数,遍历数组一遍一直加,并且记录mod k的结果,只要出现过,判断一下位置即可返回结果。

class Solution { public boolean checkSubarraySum(int[] nums, int k) { Map map = new HashMap(){{ put(0,-1); }}; int runningSum = 0; for (int i = 0; i < nums.length; i++) { runningSum += nums[i]; if (k != 0) runningSum %= k; Integer prev = map.get(runningSum); if (prev != null) { if (i - prev > 1) return true; } else map.put(runningSum, i); } return false; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:515. Find Largest Value in Each Tree Row
下一篇:PHP 新特性:闭包和匿名函数,估计你用得很少(php文件用什么软件打开)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~