[英]What does return -1 here mean?
在循环回答一些求职面试问题时,我得到了这段代码,对return -1
的作用感到困惑,我猜这段代码实际上是如何完成任务的。
#First Non-Repeating Integer in an Array
def firstNonRepeating(arr, n):
for i in range(n):
j = 0
while(j < n):
if (i != j and arr[i] == arr[j]):
break
j += 1
if (j == n):
return arr[i]
return -1
# Driver code
arr = [ 9, 4, 9, 6, 7, 4 ]
n = len(arr)
print(firstNonRepeating(arr, n))
看起来它被用作所有整数重复时的标记值,例如:
>>> a = [9, 4, 9, 4]
>>> firstNonRepeating(a, len(a))
-1
然而,这是一个糟糕的哨兵值选择,因为它也是一个完全合法的值:
>>> arr = [-1]
>>> print(firstNonRepeating(arr, len(arr)))
-1
最好提出一个异常,例如:
raise ValueError('no non-repeating integer found')
也许作者正在考虑无符号整数,它在 Python 中不存在(至少不是作为本机类型)。 还有许多其他奇怪的东西让我觉得它是由更熟悉的人写的,比如 C,而不是 Python(即,传递数组的长度,用while
不是for... range
循环数字,指到列表/序列作为数组,并在if
测试周围加上括号)。
return -1
表示数组中的每个元素都在重复
前任:
Input - 1, 1, 1
Output - -1
通常,当给定输入没有解决方案时,出于指示目的,将 -1 作为答案返回。
这里 function firstNonRepeating将在数组中所有整数至少出现两次时返回 -1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.