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

posted @ 2020-09-24 14:35  gothon  阅读(45)  评论(0编辑  收藏  举报