给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置
注意事项
There is at least one subarray that it's sum equals to zero.
样例
给出 [-3, 1, 2, -3, 4]
,返回[0, 2]
或者 [1, 3]
.
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 List<Integer> subarraySum(int[] nums) {
Map<Integer, Integer> data = new HashMap<>();
int sum = 0;
for (int i = 0; i < nums.length; ++i) {
sum += nums[i];
if (sum == 0)
return new ArrayList<>(Arrays.asList(0, i));
if (data.containsKey(sum))
return new ArrayList<>(Arrays.asList(data.get(sum) + 1, i));
else
data.put(sum, i);
}
return new ArrayList<>();
}
}