应用题-哈希表-两数之和 ( 需要特别注意一下 )

管理员
注意点: **什么时候使用哈希法?**当需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,第一时间想到哈希法。 本题需要特别注意的,题目中的限制条件,`不能使用两次相同的元素`(说的是nums[i]只能使用一次),`每种输入只会对应一个答案`。正是因为有这样的显示条件在,所以初始化index_map时,不是预先初始化好,而是过程中慢慢去初始化。 - 比如`nums = [3,3], target = 6`如果预先就初始化好了,就发现x对应的y可能是本身,不符合题目。 ```python class Solution: # 给定一个整数数组nums和一个整数目标值target, # 请在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。 # 假设每种输入只会对应一个答案,并且不能使用两次相同的元素。 def twoSum(self, nums: List[int], target: int) -> List[int]: # target = x + y, # for x in nums -> 查找y index_map = dict() for i, x in enumerate( nums ): # 边完善index_map 边寻找y # 这样可以保证[3,3] target=6的测试数据不会找到自身,并且不能使用两次相同的元素。 y = target - x if y in index_map: return [ i, index_map[ y ] ] else: index_map[ x ] = i return [] ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧