题解 | 嵌入式不用排序找数字
嵌入式不用排序找数字
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。