找到和为零的子数组

难度:简单

描述:

给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置

样例:

给出 [-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

想一想再看答案

想一想再看答案

想一想再看答案

代码:

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

鼓励我一下:

觉得还不错的话,给我的项目点个star

Last Updated: 10/24/2018, 8:07:31 PM