这里的 return -1 是什么意思?

0004

在查找一些工作面试问题的答案时,我得到了这段代码,并且对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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章