LintCode138 子陣列之和
阿新 • • 發佈:2018-12-10
- 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.
Example
Given [-3, 1, 2, -3, 4], return [0, 2] or [1, 3].
Notice
There is at least one subarray that it’s sum equals to zero.
思路:如果兩個索引處的sum值一樣,則中間的連續子陣列和為0
public List<Integer> subarraySum(int[] nums) { // write your code here Map<Integer,Integer> map = new HashMap<Integer,Integer>(); List<Integer> res = new ArrayList<Integer>(); map.put(0,-1); int sum = 0; for(int i = 0;i < nums.length; i++){ sum += nums[i]; if(map.containsKey(sum)){ res.add(map.get(sum) + 1); res.add(i); break; } map.put(sum, i); } return res; }