2024/12/6 【哈希表】LeetCode1.两数之和 【√】

解法1:暴力解法

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

需要查询一个元素是否出现过,使用哈希法。

这里不仅要知道对应的数值有没有在列表里出现过,还要知道索引。需要使用key value结构。

在C++里面,要使用map。在Python中,可使用字典或者集合。

解法2:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        #使用字典
        records = dict()

        for index, value in enumerate(nums):
            if target - value in records:
                return[records[target - value], index]
            records[value] = index
        return []

解法3:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        #使用集合
        seen = set()
        for index, value in enumerate(nums):
            if target - value in seen:
                return [nums.index(target - value), index]
            seen.add(value)
        return []

 

posted @ 2024-12-06 13:43  axuu  阅读(8)  评论(0编辑  收藏  举报