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 []