java基礎(chǔ)編程題 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?這是TOPK的經(jīng)典問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果。空間復(fù)
一道java面試題,20億數(shù)字的文本排序,如何取前100?
這是TOPK的經(jīng)典問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復(fù)雜度是K,時間復(fù)雜度是nlogk
事實上,大多數(shù)開發(fā)規(guī)范都禁止使用magic value(未定義變量),因為它有很多缺點。
在開發(fā)過程中,要養(yǎng)成良好的編碼習(xí)慣,避免使用魔術(shù)值,提高代碼的正確性和可維護性。