一道腾讯前端试题,主要是算法

题目:有一组数字,从1到n(假设n=10000),从中任意删除了3个数,顺序也被打乱,剩余数字放在一个n-3的数组里,请找出丢失的数字,要求算法比较快。

题目是前端的,但实际上还算一道算法题,下面是一个比较快的算法,据说是《编程珠玑》里面使用到的。

int _tmain(int argc, _TCHAR* argv[])

{

    int aOld[] = {5,1,3,0,9,2,7};  //4,6,8

    int* aNew = new int[11];   //实际上是要取现有数字的下标

    for (int i = 0; i < 7; i++)

    {

        int temp = aOld[i];

        aNew[aOld[i]] = 1;

    }

    

    int* aLost = new int[3];

    int k = 0;

    for(int j = 0; j < 11; j++)

    {

        int iii = aNew[j];

        if(aNew[j] != 1)

        {

            aLost[k] = j;

            k++;

        }

    }

  if(NULL !=
aNew)
  {
    delete aNew;
delete aLost;
aNew = NULL;
aLost = NULL;
  }
) return 0; }

 

你可能感兴趣的:(算法)