码迷,mamicode.com
首页 > 其他好文 > 详细

Subarray Sum

时间:2016-03-10 09:16:57      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/FLAGyuri/p/5260516.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!