问题描述:给定一个数组和整型数字,找出数组中两个数加和为该整数的两个数的下标
输入:nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
输出:return [0, 1].
首先,使用python来解题。对于列表的处理,python内置函数显得很灵活,但运行效率上却不让人那么满意。
那么,这里就一起来回忆一下python中list数据类型的各种操作。
python中列表list可以存放各种数据类型(甚至包括你至今没想到的类型,哈哈),比如说整型,字符串,浮点数,类对象等。
初始化很简单:test=[ ]#这是定义了一个空列表,并且下标是从0开始的,最后一个竟然会是-1,-len第一个元 素,len-1最后一个元素,呵呵
创建连续的list: test= range(1,5) #即 L=[1,2,3,4],不含最后一个元素
取列表的长度length=len(test)
添加数据时,可以分为在尾部添加数据:test.append(var) #追加元素;
还可以在指定下标下添加元素:test.insert(index,var)#插入元素;
将一个列表追加到列表中去,test.extend(list) #追加list,即合并list到test上,另外 对于两个列表的拼接可以直接使用加号:[1,2]+[3,4]=>[1,2,3,4]
删除列表中的数据:根据指定位置index删除 del test[index];
使用test.pop()删除最后一个元素,也可以使用test.pop(index)删除指定位置的元素
使用方法remove删除:test.remove(index)
使用切片删除:test=test[2:len(test)],这里删除了前两个元素。
对列表进行排序:test.sort() 还有倒序排列:test.reverse()
列表还可以获取某个元素在列表中出现的次数:test.count("winter")#搜索元素"winter"在列表中出现的次数。
再来看看python对列表的遍历方法:
1
for i in list:
#todo some thing with list[i],但是这种方法有个缺陷就是获取不到该元素i在列表中的位置
2
for index in range(len(list)):
process(list[index])#这里的index就是对应的列表中的位置
3 使用内置函数
enumerate
for index, item in enumerate(sequence):
process(index, item)#这样使用键值对的形式,对列表进行遍历 index为下标位置,item为值
对于列表处理,我刚开始是使用的 for value in nums:的方式去完成的,结果肯定是提示超时了。
接着我使用的是第二种遍历方式,也是提示超时,使用第三种方式才AC,哎~ 效率可想而知了。
附代码:
class Solution(object):
def twoSum(self, nums, target):
for k1,v1 in enumerate(nums):
for k2,v2 in enumerate(nums):
if (v1+v2)==target and k2>k1:
return [k1,k2]