题目:
给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置
样例:
给出 [-3, 1, 2, -3, 4]
,返回[0, 2]
或者 [1, 3]
.
思路:
从第一个元素开始遍历,将该元素后面的元素逐个相加,直到和为0或者到数组末尾。然后返回子数组的起始位置和结束位置。
具体实现代码:class Solution {
public:/**
* @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
*/
vector<int> subarraySum(vector<int> nums){
// write your code here
int sum=0;
vector<int>v;
for(int i=0;i<nums.size();i++)
{ sum=nums[i];
if(nums[i]==0){
v.push_back(i);
v.push_back(i);
return v;
}
else{for(int j=i+1;j<nums.size();j++){
sum=sum+nums[j];
if(sum==0) {
v.push_back(i);
v.push_back(j);
return v;
}
}
}
}
}
};
感想:
该题为哈希表类型的题,但是........构建哈希函数好难!!!