要找出列表中和等于9的组合

1.它利用了一个哈希表(Map)来存储已经遍历过的元素的值和它们的索引,以便在O(1)时间内查找。这是一个非常好的实现,并且在性能上优于之前的实现

// 找出第一个匹配等于符合条件等于9的下标---打印结果[0,1]
  var twoSum = function (nums, target) {
    const map = new Map();
    for (let i = 0, len = nums.length; i < len; i++) {
      if (map.has(target - nums[i])) {
        return [map.get(target - nums[i]), i];
      }
      map.set(nums[i], i);
    }
    return [];
  };
  console.log('w :>> ', twoSum([1, 8, 15, 0, 2, 7], 9));

2.你的函数会在找到第一个匹配的组合时就返回结果,如果数组中存在多个匹配的组合,这个函数会返回第一个匹配。如果你希望找到所有匹配的组合,你可以稍微修改函数来存储所有匹配的索引对,然后返回它们的数组,就像下面这样:

  // 找出所有符合条件等于9的下标---打印结果[[0, 1], [4, 5]]
  var twoSum = function (nums, target) {
    const map = new Map();
    const result = [];

    for (let i = 0, len = nums.length; i < len; i++) {
      if (map.has(target - nums[i])) {
        result.push([map.get(target - nums[i]), i]);
      }
      map.set(nums[i], i);
    }

    return result;
  };

  console.log('w :>> ', twoSum([1, 8, 15, 0, 2, 7], 9));
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容