最简单的第一题,想要有好的时间空间复杂度也是挺难得
#暴力解1 用了两层for循环def twoSum(self, nums: list[int], target: int) -> list[int]:for i in range(len(nums)-1):for j in range(i+1, len(nums)): #有个问题,最后两个元素不会被遍历if nums[i]+nums[j] == target:return [i, j]#暴力解2 使用了列表内置的count 和 indexclass Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for i in range(len(nums)-1):if target-nums[i] in nums:if nums.count(target-nums[i]) == 1 and 2*nums[i] == target: #说明只有一个continuej = nums.index(target-nums[i], i+1, len(nums))return [i, j]return []#暴力解3 优化了方法2 优化了索引class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for i in range(len(nums)-1):if target-nums[i] in nums[i+1:]:j = nums.index(target-nums[i], i+1, len(nums))return [i, j]return []#解4 采用了字典模仿哈希class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:dic = {}for i,n in enumerate(nums):cp = target - nif cp in dic:return [dic[cp], i]else:dic[n] = i #真的绝,用值作为键,用索引作为值,直接访问
