题目描述
已知:
- 整数数组: n u m s nums nums
- 整数目标值: t a r g e t target target
要求:
- 要求在 n u m s nums nums 数组中找到和的值为 t a r g e t target target 的两个整数
返回:
- 返回两个整数的数组下标
补充:
- 每个 t a r g e t target target 只会对应一个答案
- 数组中同一个元素在答案里不能重复出现
- 你可以按任意顺序返回答案
示例:
- 输入:nums = [2,7,11,15], target = 9
- 输出:[0,1]
题目解决
python:
解法一:暴力枚举
理念:
双层循环,直接将数组中每两个元素相加看看有无匹配;时间复杂度最坏情况是数组中最后两个匹配成功。
代码:
def twoSum(nums: List[int], target: int) -> List[int]:n = len(nums)for i in range(n):for j in range(i+1,n):if nums[i]+nums[j]==target:return [i,j]
解法二:哈希表(未完待续)
理念:
创建一个哈希表 h a s h t a b l e hashtable hashtable,对于每一个 x x x,我们首先查询哈希表中是否存在 t a r g e t − x target - x target−x,然后将 x x x 插入到哈希表中,即可保证不会让 x x x 和自己匹配。
代码:
def twoSum(nums: List[int], target: int) -> List[int]:hashtable=dict()for i, num in enumerate(nums):if target-num in hashtable:return [hashtable[target-num],i]hashtable[nums[i]]=i