1. Two Sum

25 年 10 月 1 日 星期三
150 字
1 分钟
Screenshot 2025-10-01 at 12.40.47 pm

暴力

时间复杂度 O(n^2)

哈希

枚举j(右边的数),用hash set记录j已经走过的数,在hash set中找i

hash set 的key为数组的value, value为数组的index

lc1-new-c.png
js
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function (nums, target) {
  const idx = new Map() // 创建一个空哈希表
  for (let j = 0; ; j++) {
    // 枚举 j
    const x = nums[j]
    // 在左边找 nums[i],满足 nums[i]+x=target
    if (idx.has(target - x)) {
      // 找到了
      return [idx.get(target - x), j] // 返回两个数的下标
    }
    idx.set(x, j) // 保存 nums[j] 和 j
  }
}

时间复杂度 O(n)

文章标题:1. Two Sum

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/1_two_sum[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。