题目描述:
示例 1:
示例 2:
思路一:
暴力解法
代码实现:
class Solution {
public int numSubarraysWithSum(int[] nums, int goal) {
int count = 0;
int len = nums.length;
for (int i = 0; i < len; i++) {
int sum = 0;
for (int j = i; j < len; j++) {
sum += nums[j];
if (sum > goal) {
break;
} else if (sum == goal) {
count++;
}
}
}
return count;
}
}
思路二:
代码实现:
class Solution {
public int numSubarraysWithSum(int[] nums, int goal) {
int count = 0;
int len = nums.length;
int[] arr = new int[len];
int sum = 0;
for (int i = 0; i < len; i++) {
sum += nums[I];
arr[i] = sum;
}
Map<Integer, Integer> map = new HashMap();
map.put(0,1);
for (int i = 0; i < len; i++) {
if (map.containsKey(arr[i] - goal)) {
int index = map.get(arr[i] - goal);
count += index;
}
Integer value = map.get(arr[I]);
map.put(arr[i], value == null ? 1 : ++value);
}
return count;
}
}