安静如鸡

  • Home
  • About Me
  • Contact Me
  • 东京女子篮球活动记录
一个博客
  1. 首页
  2. Tech
  3. Leetcode
  4. 正文

1. Two Sum

2026-07-14 0人点赞 0条评论

这个题过于经典,是个easy题型,但是因为在3sum之前想复习一下所以先写一下思路。

首先这个followup看完就知道一开始肯定是有brute force解法的,两次for循环找到相加为target的就直接返回

现在我们看看如何能够不用两个for-loop。

首先就是我们需要找到两个数相加 = target,但是其实我们也可以反向想一下,只要找到一个数 = target - 另一个数就可以了

比较简单的想法是我们循环两次,第一次保存target-nums[i],第二次循环来寻找数列是否有一个数 = target-nums[i]且这个数的i不等于nums[i]的 i,否则可能会造成target=某个数的2倍数时找到同一位置的这个数两次。(ex. [3,3] target = 6)

hashmap = {}

for i in range(len(nums)):
    hashmap[nums[i]] = i

for i in range(len(nums)):
    complement = target - nums[i]
    if complement in hashmap and hashmap[complement] != i:
        return [i, hashmap[complement]]

# If no valid pair is found, return an empty list
return []
Python

而如果我们一个for-loop可以循环自身,同时又用O(1)O(1)的方式找到之前循环过的数字是否 = target - 自身,那么我们就用一个for loop就可以直接返回这个pair了

题目里的Only One Valid answer exists就很重要,因为有且只有一对,所以找到之后马上返回是没问题的。并不会出现找不到or重复的问题。

用O(1)O(1)方式找数字非常容易想到hash table因为key的保存是hash,查表的时候只需要O(1)

所以具体Code如下:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for i, num in enumerate(nums):
            if target - num in dic:
                return (i, dic[target-num])
            dic[num] = i
Python
标签: hash table
最后更新:2026-07-27

Ellison

什么都懂点,什么都不精。属于混吃等死,享受生活,过一天算一天的享乐主义。喜欢电影,阅读,以及游戏和美食。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Ellison

什么都懂点,什么都不精。属于混吃等死,享受生活,过一天算一天的享乐主义。喜欢电影,阅读,以及游戏和美食。

最新 热点 随机
最新 热点 随机
16. 3Sum Closest 259. 3Sum Smaller 17. Letter Combinations of a Phone Number Unity中的相机投影矩阵以及推导 15. 3Sum 628. Maximum Product of Three Numbers
Unity中的相机投影矩阵以及推导17. Letter Combinations of a Phone Number259. 3Sum Smaller16. 3Sum Closest
Fix You (八) 【Unity小贴士】关于Addressable的热更新 【Unity小贴士】取得一个Texture的四个顶点在WorldSpace的Position 16. 3Sum Closest Fix You (三) 【Unity小贴士】content size fitter

COPYRIGHT © 2024 安静如鸡. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang