今天面试遇到一个算法问题,求解!
我有0~99一共100个数,又有int a[101]这个可以装101个元素的数组。我将100个数随机的装到数组的某个位置中,然后会剩下一个空位置,然后再从0~99个数中随机挑一个,然后插入到这个空位置中。
问题是:如果快速的找到这个被插入的数。
[解决办法]
首先全部加起来,减去5050,得到插入的数是多少
然后循环,找到这个数,会找到2个
一个是原来已经存在的数,另一个是新插入的
这两个数字无法区分了
[解决办法]
做一个数组int b[101]={-1},储存各个数字的位置
例如第一个数字是5,就记录b[5]=1;
第二个数字为100,记录b[100]=2;
遇到已经记录的数字,退出循环
例如第55个数字是5
检查b[5]已经存在1,则55和1是新插入的数,否则b[5]=55;