java list 時(shí)間排序 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個(gè)Java問(wèn)題,所以這是典型的TOPK問(wèn)題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因?yàn)檫@是一個(gè)Java問(wèn)題,所以這是典型的TOPK問(wèn)題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最后100個(gè)元素就是結(jié)果。空間復(fù)雜度為k,時(shí)間復(fù)雜度為nlogk
您可以完成執(zhí)行列表.addAll(空白列表),然后執(zhí)行洗牌操作。這時(shí),選擇題和填空都是隨機(jī)的,然后執(zhí)行列表.addAll(根列表)把申請(qǐng)問(wèn)題放進(jìn)去。這樣,在應(yīng)用題之前的填空題和選擇題都是隨機(jī)排列的,然后應(yīng)用題就排在最后