题解 | 嵌入式不用排序找数字
嵌入式不用排序找数字
https://www.nowcoder.com/practice/6bc7a21c2fac45ed87883833160ddcc1
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @param numbersLen int numbers数组长度
* @return int整型
*/
int find(int* numbers, int numbersLen ) {
// write code here
int temp_array[201] = {0};
for(int i = 0; i < numbersLen; i++){
temp_array[numbers[i]]++;
}
int k = 1;
int leave = 451;
while(leave - temp_array[k] > 0){
leave -= temp_array[k];
k++;
}
return k;
}
思想就是自己用一个200或者201长的数组作为一个哈希表,从头到尾存一遍,然后在查找到表的第406个数字。时间复杂度和空间复杂度都是O(n)。但这道题最后这句“你能快速找到从0开始的第450小的数字吗?(从小到大第450位)”说的不明确,又说从0开始,又说第450位,希望官方可以改一下,比如从小到大下标是450。
