在查找一些工作面试问题的答案时,我得到了这段代码,并且对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 中不存在(至少不是作为本机类型)。还有很多其他奇怪的地方让我认为它是由比 Python 更熟悉 C 语言的人编写的(即,传入数组的长度,使用while
而不是循环遍历数字for ... range
,将列表/序列称为一个数组,以及围绕if
测试的括号)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句