当我为之前用python解决的简单面试问题编写代码时,我遇到了一个问题
代码:给定一个整数数组,返回两个数字的索引,以便它们相加到一个特定目标
您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素
给定一个整数数组,打印两个数字的索引,使它们相加到一个特定目标
def twoNum(*arr, t):
cur = 0
x = 0
y = 0
for i in range (len(arr) - 1):
for j in range (len(arr) - 1):
if(i == j):
break
cur = arr[i] + arr[j]
if(t == cur):
x = arr[i]
y = arr[j]
break
if(t == cur):
break
print(f"{x} + {y} = {x+y} ")
arr = [3, 5, -4, 8, 11, 1, -1, 6]
target = 10
twoNum(arr, t=target)
问题是:我在函数中定义了x, y
,然后使用了x = arr[i]
和y = arr[j]
,我正在打印这些值
输出为:为0+0=10(其中目标为10)
我猜这可能是因为我最初在函数中使用了x = 0
和y = 0
,而且似乎x
和y
值没有更新,然后我在VSCode中看到了大纲部分,在那里我看到x
和y
被声明了两次,一次在函数开始时,第二次在for循环中
有人能解释一下这里发生了什么事吗
参考,这里是我在C++
中编写的代码的图像
下面是一种使用列表理解实现暴力方法的方法:
输出:
也许使用迭代器更适合Python:
当您开始实施O(n)解决方案时,您应该查阅字典:
基本上,您要做的是用python编写C代码。 相反,我将首先尝试关注如何以“pythonic”的方式编写python代码。但对于您的问题,请使用python中的暴力解决:
更改此项:
为此:
*
用于指示将有数量可变的参数,请参见this。它不是指针,如C++中的。p>相关问题 更多 >
编程相关推荐