在从1到n这n个连续自然数中,任意取出n-1个数放在一个含有n-1个项的数组中(任意顺序排列),请你用java编写一个函数,用以找到所缺的那个数。要求该算法满足时间复杂度为o(n),空间复杂度为常数。

解决方案 »

  1.   

    由于是任意取n-1个数,
    我建议排序之后查找是否连续,不过这样的话v....
    起泡排序复杂度是n*n、不知道怎么弄?
    LX继续
      

  2.   

    搞定了...LZ给分吧!!!
    public int Test(int[] a){
      int i=(1+a.length+1)*(a.length+1)/2;
      int k=0;
      for(int n=1;n<=a.length;n++)k+=a[n];
      return i-k;
    }
      

  3.   

    稍微修正一下..
    第4行
    public   int   Test(int[]   a){ 
        int   i=(1+a.length+1)*(a.length+1)/2; 
        int   k=0; 
        for(int n=0;n<a.length;n++)k+=a[n];  //这里犯了个小错-___,-|||
        return   i-k; 
    }
      

  4.   

    talent.
    good way to solve it.
    if it was me, I will resort String to kill this problem.