leetcode_1
1. 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
暴力破解:
哈希表思路:
参考大佬的回答
Python中没有指针,所以创建一个字典,用于存放数组的下标和值:
思路:
先将数组的值存放进字典,再进行值得比对,再返回符合的值得下标,需要两次循环时间复杂度为O(n2),空间复杂度为O(1);
思路改进:
边存边找,只需要进行一次循环时间复杂度为O(n),空间复杂度为O(1)。
代码:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = {}
for key, value in enumerate(nums):
if target-value in dic:
return [dic[target-value], key]
dic[value] = key