完整的题目差不多是这样的: 现在有一个文件 a.txt ,其中放的内容就是 60 亿人的身高,每个身高数据都保证是以.0 或者.5 结尾的(比如说 180.0 ,175.5 );现在请筛选出其中前 1000 高的数据; 要求时间复杂度是 o(n); 面试官说这玩意不是一个单纯的算法,身高数据可以做点文章……但到最后还是没想出来………………有没有高智商 V 友可以解答一下 身高, 筛选, 复杂, 数据
数据是以.0 或者.5 结尾,意味着这是个有范围的离散数据而不是连续数据。假设人类的身高区间是 10 厘米-250 厘米,间距 0.5 厘米,其实也就( 250-10 )*2=480 个。作 480 个数据桶,遍历一遍就可以把 60 亿数据都放到这 480 个数据桶里,然后取不为空的最大身高值的桶里的数据即可