1. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
一、python-暴力与哈希
import cProfile
def twosum1(num_list,target):#暴力遍历
for i in range(len(num_list)):
res=target-num_list[i]
if res in num_list[i+1:]:#从列表num_list中的第i+1个元素开始,一直到列表的末尾
print("[%d,%d]"%(i,num_list[i+1:].index(res)+i+1))
def twosum2(num_list,target):
hashtable=dict()
for i,num in enumerate(num_list):#在每次迭代中,enumerate()函数会返回一个元组,其中第一个元素是当前元素的索引(从0开始),第二个元素是当前元素的值
if target - num in hashtable:
print("[%d,%d]"%(hashtable[target-num],i))
else:
hashtable[num]=i#将键为num,值为i的键值对添加到哈希表hashtable中
if __name__=='__main__':
numbers = input("nums=").split()
num_list = [int(x) for x in numbers if x.isdigit()]
#这里要注意要保证列表中数据格式不是str而是int
target = input("target=")
target=int(target)#同时要保证int格式,int要与int格式的数据执行加法
cProfile.run('twosum1(num_list, target)')#cProfile 模块用于执行代码的性能分析。它会生成一个分析报告,显示函数调用次数、执行时间和内存占用等信息
#cProfile.run('twosum2(num_list, target)')
二、运行