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