• 数组累加和问题三连中的第二连
    • 不过有一点点不一样

      1. public int subarraySum(int[] nums, int k) {
      2. int sum = 0;
      3. int count = 0;
      4. // key : 前缀和 value: 出现的次数
      5. HashMap<Integer, Integer> map = new HashMap<>();
      6. map.put(0, 1);
      7. for (int i = 0; i < nums.length; i++) {
      8. sum += nums[i];
      9. if (map.containsKey(sum - k)) {
      10. count += map.get(sum - k);
      11. }
      12. if (!map.containsKey(sum)) {
      13. map.put(sum, 1);
      14. } else {
      15. map.put(sum, map.get(sum) + 1);
      16. }
      17. }
      18. return count;
      19. }