一道腾讯前端试题,主要是算法
题目:有一组数字,从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; }