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.
vector<int> subarraySum(vector<int> nums){
unordered_map<int, int> map;
map[0] = -1;
int sum = 0;
vector<int> res(2);
for(int i=0; i<nums.size(); i++) {
sum += nums[i];
if(map.count(sum) != 0) {
res[0] = map[sum]+1;
res[1] = i;
return res;
}
map[sum] = i;
}
return res;
}