安静如鸡

  • 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

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

最新 热点 随机
最新 热点 随机
122. Best Time to Buy and Sell Stock II 16. 3Sum Closest 259. 3Sum Smaller 17. Letter Combinations of a Phone Number Unity中的相机投影矩阵以及推导 15. 3Sum
122. Best Time to Buy and Sell Stock II
【Unity小贴士】关于OnCollisionEnter和OnTriggerEnter 122. Best Time to Buy and Sell Stock II Fix You (四) Fix You 番外 MacOS Xcode上的Vulkan开发环境 【Unity小Tips】如何从一个assembly访问另一个assembly的internal类

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

Theme Kratos Made By Seaton Jiang