题目:
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.
Example:
Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
题意:数组中两个数相加,使结果等于某个给定的数,返回这两个数的下标。
leetcode的第一题:1. Two Sum
第一种方法,用了字典数据结构,比较炫酷,但是不能解决输入nums=[0,3,4,0],target=0的问题:
class Solution(object):
def twoSum(self, nums, target): #类里面的函数自带self参数,self可以在函数里用,而这个self也是使用时自动传递过去的""" #单行注释用#,多行注释用''' ''' 或 """ """
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
num_dict = dict() #定义词典
for i,num in enumerate(nums): #python的变量不用声明, i,num用于记录python内置函数enumerate的返回,即列表nums的下标和下标对应的数值
num_dict[num] = i
for num in nums: #索引,对nums里面的每个数进行遍历,nums是list,for循环时对它的每个value进行遍历
delta = target - num
if delta == num:
if num_dict[num] != num_dict[delta]:
return [num_dict[num], num_dict[delta]]
break
else:
continue
if delta in num_dict: #字典的存储结构是(key,value), num_dict.keys()获取key的列表,num_dict.values()获取value列表,不带后缀,就默认对字典的key进行遍历
return [num_dict[num], num_dict[delta]]
'''
笔记:
1、
twoSum函数的调用:
s = Solution()
print s.twoSum([3,2,4], 6)
2、
enumerate的用法:
enumerate()是python的内置函数,enumerate在字典上是枚举、列举的意思
对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
例如:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
>>>
0 这
1 是
2 一个
3 测试
3、python 2.0版本和3.0版本的关于print的区别
2.0版本里用 print a
3.0版本里需要用 print(a)
4、字典的数据结构
'''
第二种简单的方法:
class Solution(object):
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
list_len = len(nums)
for i in range(list_len):
for j in range(i+1,list_len):
if nums[i] + nums[j] == target:
return [i,j]
'''
笔记:
1、 range()函数的用法:
>>>
range
(
1
,
5
)
#代表从1到5(不包含5)
[
1
,
2
,
3
,
4
]
>>>
range
(
1
,
5
,
2
)
#代表从1到5,间隔2(不包含5)
[
1
,
3
]
>>>
range
(
5
)
#代表从0到5(不包含5)
[
0
,
1
,
2
,
3
,
4
]
|
'''