和相同的二元子数组

阅读 36

2021-09-21

题目描述:
示例 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;
    }
}

精彩评论(0)

0 0 举报