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

523. Continuous Subarray Sum

Subarray Sum

LeetcodeMinimum Size Subarray Sum

209. Minimum Size Subarray Sum

209. Minimum Size Subarray Sum