1.the sum (python)
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
首先,这道题是关于确定值查询的问题。最容易想到的是用一个空列表来接收返回的两个数字的索引。通过双重循环比较数组中是否有两个值之和等于目标值,且i!=j。有的话就把i,j的值存到空列表中。很显然这样做有明显的缺陷,时间复杂度为0(n^2)。
为了提高时间复杂度,这里引进散列表查找(哈希)。什么是哈希算法?就是在记录存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。简而言之,就是数据和存储位置构成一个映射关系。碰巧,python中的字典就是采用哈希算法编写的。每个关键字对应于一个键值。首先先建立一个空字典,然后逐个检查目标值-num[i] 是在列表中,不在的话,就把num[i]:i 键值对添加到字典中。直到有在列表中的就将两个下标存到列表中,最后返回列表即可。利用哈希算法。时间复杂度是o(n)。比上一种方法时间复杂度低。
刷的第一道题,要加油啊!