Subarray Sum
Posted YuriFLAG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Subarray Sum相关的知识,希望对你有一定的参考价值。
Given an integer array, find a subarray where the sum of numbers is zero. Your code should return the index of the first number and the index of the last number.
Given [-3, 1, 2, -3, 4]
, return [0, 2]
or [1, 3]
.
考察集合
思路: 累加数组的每一个元素,当和出现重复时表明该范围内存在子数组子和为0的情况。
1.建立HashMap key:为数组的值,value:为数组的下标。
2.遍历数组求和。查找和是否在HashMap中出现,出现则表明存在子数组和为0。否则,将sum和下标加入map中。
public class Solution { public ArrayList<Integer> subArraySum (int[] nums) { ArrayList<Integer> ans = new ArrayList<>(); if (nums == null || nums.length == 0) { return 0; } HashMap<Integer, Integer> map = new HashMap<>(); map.put(0, -1); int sum = 0; for (int i = 0; i < nums.length; i++) { sum += nums[i]; if (map.containsKey(sum)) { ans.add(map.get(sum) + 1); ans.add(i); } else { map.put(sum, i); } } return ans; } }
以上是关于Subarray Sum的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 560.Subarray Sum Equals K_Medium tag: Array, Subarray, prefix Sum
LeetcodeMinimum Size Subarray Sum