广西住房和城乡建设培训中心网站,汕头建筑工程总公司官网,个人网页制作多少钱,安装 wordpress给定一个包含非负数的数组和一个目标整数 k#xff0c;编写一个函数来判断该数组是否含有连续的子数组#xff0c;其大小至少为 2#xff0c;总和为 k 的倍数#xff0c;即总和为 n*k#xff0c;其中 n 也是一个整数。
示例 1:
输入: [23,2,4,6,7], k 6 输出: True 解释…给定一个包含非负数的数组和一个目标整数 k编写一个函数来判断该数组是否含有连续的子数组其大小至少为 2总和为 k 的倍数即总和为 n*k其中 n 也是一个整数。
示例 1:
输入: [23,2,4,6,7], k 6 输出: True 解释: [2,4] 是一个大小为 2 的子数组并且和为 6。 示例 2:
输入: [23,2,6,4,7], k 6 输出: True 解释: [23,2,6,4,7]是大小为 5 的子数组并且和为 42。 说明:
数组的长度不会超过10,000。 你可以认为所有数字总和在 32 位有符号整数范围内。
提交的代码
class Solution { public boolean checkSubarraySum(int[] nums, int k) { HashMapInteger,Integer map new HashMap(); int sum 0; map.put(0,-1);//0取余任何数都为0所以有两个连续的0即为true把0的值取为-1如果第一个位置为0不返回true其 //他时候返回true for (int i 0; i nums.length; i) { sum nums[i]; if (k ! 0) sum sum % k; if (map.containsKey(sum)) { if (i - map.get(sum) 1) return true; } else map.put(sum, i); } return false; }
}