题目:给定一个整数数组和一个目标值,找到数组中两个数的和等于目标值,返回这两个数的下标,要求时间复杂度为O(n)。

示例输入:[2, 7, 11, 15], 9

示例输出:[0, 1]

解释:数组中下标为0和1的数相加等于目标值9。

答案:

function twoSum(nums, target) {
  const map = new Map();
  for (let i = 0; i < nums.length; i++) {
    const complement = target - nums[i];
    if (map.has(complement)) {
      return [map.get(complement), i];
    }
    map.set(nums[i], i);
  }
  return [];
}

console.log(twoSum([2, 7, 11, 15], 9)); // [0, 1]

解析:使用哈希表,遍历数组,将数组元素和下标存储到哈希表中。对于每个元素,计算出目标值和当前元素的差值,如果差值在哈希表中存在,则返回这两个数的下标。如果不存在,则将当前元素和下标存入哈希表中,继续遍历。时间复杂度为O(n)。

我希望你能担任高级前端开发员。出一道js编程题并给出答案

原文地址: https://www.cveoy.top/t/topic/5Fk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录