# 找到和为零的子数组
# 难度:简单
# 描述:
给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置
# 样例:
给出 [-3, 1, 2, -3, 4]
,返回[0, 2]
或者 [1, 3]
# 代码模板:
/**
* @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
*/
const subarraySum = function(nums) {};
1
2
3
4
5
2
3
4
5
# 想一想再看答案
# 想一想再看答案
# 想一想再看答案
# 代码:
const subarraySum = function(nums) {
let [total, res] = [0, []]; // 和,结果
for (let i = 0; i < nums.length; i++) {
res = [];
res[0] = i; // 保存起始位置
// 需要第二层循环 可能第一个元素直到最后和也不是0 那么需要从第二个元素再找 以此类推
for (let j = i; j < nums.length; j++) {
total = total - nums[j]; // 不断减去每个元素 直到结果为0
if (total === 0) {
res[1] = j; // 保存第二个下标
return res; // 返回起始和结束的下标
}
}
}
return false; // 没找到
};
console.log(subarraySum([-3, 1, 2, -3, 4]));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17