Given an array of integers nums
and an integer k
, return the total number of continuous subarrays whose sum equals to k
.
Example 1:
Input: nums = [1,1,1], k = 2 Output: 2
Example 2:
Input: nums = [1,2,3], k = 3 Output: 2
Constraints:
1 <= nums.length <= 2 * 104
-1000 <= nums[i] <= 1000
-107 <= k <= 107、
class Solution { public int subarraySum(int[] nums, int k) { int count=0; int[] arr = new int[nums.length+1]; arr[0]=0; for(int i=1;i<arr.length;i++){ arr[i]=arr[i-1]+nums[i-1]; } for(int i=0;i<arr.length-1;i++){ for(int j=i+1;j<arr.length;j++){ if(arr[j]-arr[i]==k) count++; } } return count; } }
class Solution { public int subarraySum(int[] nums, int k) { int count=0; int[] arr = new int[nums.length+1]; arr[0]=0; for(int i=1;i<arr.length;i++){ arr[i]=arr[i-1]+nums[i-1]; } Map<Integer,Integer> map = new HashMap(); for(int i=0;i<arr.length;i++){ count+=map.getOrDefault(arr[i]-k,0); map.put(arr[i],map.getOrDefault(arr[i],0)+1); } return count; } }
560. Subarray Sum Equals K Medium
Given an array of integers nums
and an integer k
, return the total number of continuous subarrays whose sum equals to k
.
Example 1:
Input: nums = [1,1,1], k = 2 Output: 2
Example 2:
Input: nums = [1,2,3], k = 3 Output: 2
Constraints:
1 <= nums.length <= 2 * 104
-1000 <= nums[i] <= 1000
-107 <= k <= 107
class Solution { public int subarraysDivByK(int[] nums, int k) { Map<Integer,Integer> map = new HashMap(); int count = 0; int sum=0; map.put(0,1); for(int i=0;i<nums.length;i++){ sum=(sum+nums[i]%k+k)%k;//这里加k是为了防止负数 count += map.getOrDefault(sum,0); map.put(sum,map.getOrDefault(sum,0)+1); } return count; } }