algorithm - 从给定的算术级数中查找缺失的数字

标签 algorithm

我遇到了这个问题,您得到一个数字 N 作为输入,然后是 N 个数字(其中 3<=N<=2500)。这些 N 数字是算术级数(大小为 N+1)的一部分,其中一个数字被删除。所以任务是找到那个丢失的号码。例如

5
1 3 5 9 11  

输出为7

我想出了两种方法,第二种方法通过了所有测试用例,但第一种方法在某些(隐藏)情况下失败。

首先我会解释第二种方法

方法二

Let diff=(last_number-first_number)/N
 //Considering 0 based indexing
 for i=0 to (N-2)
    if( array[i+1] is not equal to (array[i]+diff))
          print (array[i]+diff)
          break

这个方法通过了所有的测试用例。现在我实现的第一个方法,但在某些测试用例中失败了,如下所示

方法一

 //Considering 0 based indexing
 for i=1 to (N-2)
      if (2*array[i] is not equal to (array[i-1]+array[i+1])) then
              if( (array[i]-array[i-1])< (array[i+1]-array[i]))
                      print 2*array[i]-array[i-1]
              else 
                      print 2*array[i]-array[i+1]
              break

谁能解释一下 METHOD I 有什么问题??我缺少哪些案例。 谢谢。

最佳答案

当数字按降序排列时,方法 1 不起作用。

对于 7 5 1 输出应该是 3 但算法会给出 9。

方法 2 在这种情况下有效,因为差值被正确计算为负数并且算法会相应地进行。

关于algorithm - 从给定的算术级数中查找缺失的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495187/

相关文章:

algorithm - 3D 线性回归

python - 我如何找到从 1 到 A 的最小合法跳跃次数?

c++ - 检查一个字符串是否是另一个字符串的排列

r - 如何在 R 中编写分段函数进行一些模拟并将值存储在数据框中

c - 为什么下面的代码是错误的?

algorithm - k-Nearest-Neighbor算法中如何同时使用二进制和连续特征?

java - 如何将两个排序数组合并为一个排序数组?

c# - 将人的高度从英尺和英寸转换为英寸 C#

algorithm - 二进制数的倒数

algorithm - 从 2d tile 数组创建多边形