javascript - 给定一个包含数字的数组,当 2 个元素加起来等于一个目标时,我如何编写一个递归函数来查找数组中的索引?

标签 javascript recursion

这里是提示:给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标。

您可以假设每个输入都有一个解决方案。

例子: 给定 nums = [2, 11, 15, 7], target = 9,

因为 nums[0] + nums[1] = 2 + 7 = 9, 返回 [0, 1]。

这是我的解决方案,但它似乎没有给出我预期的输出:

var sumTarget = function(array, target) {
  var result = [];
  var copy = array.slice();
  var firstValue = array.shift();
  if (array.length === 0) {
    return result;
  }
  for (var i = copy.indexOf(firstValue) + 1; i < copy.length; i++) {
    if (firstValue + copy[i] === target) {
      Array.prototype.push.apply(result, [copy.indexOf(firstValue), i]);
    }
  }

  return sumTarget(array, target);
};

最佳答案

像这样:

https://jsfiddle.net/rqp93gpy/2/

function getIndexes(arr, target, offset) {
  var result = [], i;
  if (arr.length <= 1) return [];

  if (offset === undefined) offset = 0;

  for (i = 1; i < arr.length; i++) {
    if (arr[0] + arr[i] === target) {
      result.push([offset, offset + i]);
    }
  }
  return result.concat(getIndexes(arr.slice(1), target, offset + 1));
}

console.log(JSON.stringify(getIndexes([2, 11, 15, 7, 6, 3, 4, 8, 9, 5, 7], 9),
                           null, 4));

输出:

[
    [
        0,
        3
    ],
    [
        0,
        10
    ],
    [
        4,
        5
    ],
    [
        6,
        9
    ]
]

关于javascript - 给定一个包含数字的数组,当 2 个元素加起来等于一个目标时,我如何编写一个递归函数来查找数组中的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803754/

相关文章:

c - 在递归文件遍历 C 期间获取完整文件路径

javascript - 具有递归函数的程序

javascript - 如何处理未经授权用户的浏览器后退导航

javascript - 使用 JavaScript 模仿占位符行为

Ruby 代码说明 : Numbers to String using Recursion

python - python 中混合层次结构级别的 shutil.rmtree

python - 递归函数中的列表

javascript - Google 在 ASP.Net MVC 中部分页面加载后设置自动完成功能不起作用

javascript - 隐藏的JavaScript错误

javascript - 授权 header 在 AJAX CORS 请求中仅附加一次