Leetcode Hot 1001 分钟

两数之和

LeetCode 经典题「两数之和」的两种解法:暴力双循环与哈希表优化。

两数之和 封面图

题目

image

解法

解法一 暴力双循环

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i, j]

解法二 哈希表

数组的值作为字典的key,数组的下标作为字典的value,在循环时,边循环边查找,同时保持维护

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        for i in range(len(nums)):
            # 先检查需要的数在dic中吗
            if target - nums[i] in dic:
                return [dic[target - nums[i]], i]
            dic[nums[i]] = i
        return []