题目:
输入一个数组和target,要在一个数组中找到两个数字,其和为target,从小到大输出数组中两个数字的位置。
给定数组:nums = [2, 7, 11, 15], 数值:target = 9,
使得:nums[0] + nums[1] = 2 + 7 = 9,
返回:return [0, 1]
暴力搜索--循环,时间复杂度n*n
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
a = []
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j] == target:
a.append(i)
a.append(j)
return a
参考网上:构造字典,字典用来存储当前元素完成target需要的元素值作为key,当前元素的index作为value.进行遍历
巴拉巴拉一堆。看一下这个enumerate什么东东
输入:
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print i, element
输出:
0 one
1 two
2 three
可以看出下标一一对应了
class Solution(object):
def twoSum(self, nums, target):
for index ,element in enumerate(nums): #一一遍历字典里面的数据,并对应key-value
element1 = target - element #找到两个索引,判断条件:都属于字典中,并且位置不能相同
if element1 in nums:
index1 = nums.index(element1)
if index1 !=index:
return [index, index1]