两数之和(twoSum)*

1.两数之和

https://leetcode-cn.com/problems/two-sum/
给定一个整数数组 nums 和一个目标值 target, 请你再该数组钟找出和为目标的那 两个 整数, 并返回他们的数组下标。
你可以假设每种输入指挥对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0,1]

解析:
1.暴力解:
遍历数组,列举所有两两组合,判断是否等于 target。复杂度 O(n^2)
2.hash表 复杂度O(n)

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        hashmap = {}
        for i,num in enumerate(nums):
            if hashmap.get(target - num) is not None:
                return [i,hashmap.get(target - num)]
            hashmap[num] = i

3.知识点:
hash 表查找key的复杂度是O(1).
数组/链表查找value的复杂度是O(n),寻址的复杂度是O(1).

你可能感兴趣的:(两数之和(twoSum)*)