给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置。
样例
给出[-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3].
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].
Note
There is at least one subarray that it’s sum equals to zero.
public class Solution {
/**
* @param nums: A list of integers
* @return: A list of integers includes the index of the first number
* and the index of the last number
*/
public ArrayList<Integer> subarraySum(int[] nums) {
if(null == nums) return null;
for(int i = 0; i < nums.length; i++) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(i);
int sum = nums[i];
if(sum == 0) {
list.add(i);
return list;
}
for(int j = i + 1; j < nums.length; j++) {
sum += nums[j];
if(sum == 0) {
list.add(j);
return list;
}
}
}
return null;
}
}