diff --git a/5.leetcode/src/com/fanxb/common/Q930.java b/5.leetcode/src/com/fanxb/common/Q930.java new file mode 100644 index 0000000..3c6355b --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/Q930.java @@ -0,0 +1,38 @@ +package com.fanxb.common; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; + +/** + * Created with IntelliJ IDEA + * + * @author fanxb + * Date: 2020/6/11 10:58 + */ +public class Q930 { + public int numSubarraysWithSum(int[] nums, int goal) { + //计算前缀和 + int[] sumArr = new int[nums.length]; + sumArr[0] = nums[0]; + for (int i = 1; i < nums.length; i++) { + sumArr[i] = sumArr[i - 1] + nums[i]; + } + //记录前缀和的次数 + Map resultMap = new HashMap<>(); + //适配第一个数就是target的情况 + resultMap.put(0, 1); + int res = 0; + for (int i = 0; i < nums.length; i++) { + int r = sumArr[i], l = r- goal; + res += resultMap.getOrDefault(l, 0); + resultMap.put(r, resultMap.getOrDefault(r, 0) + 1); + } + return res; + } + + public static void main(String[] args) { + System.out.println(new Q930().numSubarraysWithSum(new int[]{1, 0, 1, 0, 1}, 2)); + } +}