【问题标题】:What does return -1 here mean?这里的 return -1 是什么意思?
【发布时间】:2021-05-25 09:17:45
【问题描述】:

在循环一些求职面试问题的答案时,我得到了这段代码,对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)) 

【问题讨论】:

  • 这意味着数组中的所有项目都出现了不止一次。

标签: python return


【解决方案1】:

当所有整数重复时,它似乎被用作sentinel value,例如:

>>> 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')

也许作者正在考虑 unsigned 整数,它在 Python 中不存在(至少不是作为原生类型)。还有很多其他奇怪的东西让我觉得它是由比 Python 更熟悉的人写的(比如,传递数组的长度,用 while 而不是 for ... range 循环数字,指到 list/sequence 作为数组,并在 if 测试周围加上括号)。

【讨论】:

  • 为什么不直接重新运行第一个非重复 intg 的值?
  • @0004 什么意思?
【解决方案2】:

通常,当给定输入不存在解决方案时,出于指示目的,将 -1 作为答案返回。

这里的函数 firstNonRepeating 将在所有整数在数组中至少出现两次时返回 -1。

【讨论】:

    【解决方案3】:

    return -1 用于当数组中的每个元素都重复时

    例如:

    Input - 1, 1, 1
    Output - -1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 1970-01-01
      • 2022-11-15
      • 2011-04-15
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 2017-03-02
      相关资源
      最近更新 更多