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

题目:有一组数字,从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; }

 

posted @ 2012-07-02 17:09  陈朋  阅读(848)  评论(0编辑  收藏  举报