在整数数组

时间:2015-05-10 05:31:50

标签: java arrays algorithm

我得到了一个连续的数组,例如:

{4,5,7,8,9,10} // missing 6

我应该有效地找到失踪的6。

我想过做二分搜索,检查mid +1,mid -1。

但我一直认为会有这么多基本情况。我一直都在失败......

这应该不是一个很难的问题,但我不知道为什么我这么努力奋斗:/

有人可以指导我完成这个吗?

非常感谢guyz

2 个答案:

答案 0 :(得分:2)

永远是keep it simple伙伴。您总是可以在N时间复杂度中执行此操作。

int[] arr = new int[]{4,5,7,8,9,10};
        int missing=0;
        for(int i=0;i<arr.length;i++)
        {  

            int x = arr[++i];
            int y = arr[i] +1;

          if(x != y )
          {
              missing = y;
              break;
          }
        }

        System.out.println(missing);

答案 1 :(得分:1)

在一个线性传递中找到最小元素,最大元素和所有元素的总和。

知道最小和最大可以计算所有数字的总和(如果没有遗漏)(它是算术级数的总和)。从中减去实际总和将为您提供缺失的数字。