所以我是竞争性编码的初学者,开始练习Leetcode问题
问题如下:
给定一个整数数组nums和一个整数目标,返回两个数字的索引,使它们相加到目标。 您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素。 您可以按任意顺序返回答案
例1:
输入:nums=[2,7,11,15],target=9
输出:[0,1]
输出:因为nums[0]+nums[1]==9,所以我们返回[0,1]
我采用了一种简单的方法,或者你可以称之为蛮力方法:
def twosum(nums,target):
for i in range(0,len(nums)):
for j in range(0,len(nums)):
if i != j and nums[i] + nums[j] == target:
return i,j
我能做些什么来提高代码的效率和质量
作为一般规则,如果需要索引,请使用enumerate not range(len(..)
我想那样会更有效率
我个人会更进一步,使用itertools.product()
您可以创建一个
dict
来存储值及其索引,并通过在dict
中减去(target - current_value)
进行检查;由于字典查找是固定时间的,因此您可以一次性找到解决方案:一些时间安排:
以下是如何做到这一点:
这方面的代码是:
相关问题 更多 >
编程相关推荐