java編程題庫 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因為這是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因為這是一個Java問題,所以這是典型的TOPK問題。首先取前100個數(shù)字構(gòu)建一個最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時調(diào)整堆。堆中最后100個元素就是結(jié)果??臻g復雜度是k,時間復雜度是nlogk
對于這個問題,我考慮了一段時間,想出了一個比較愚蠢的方法。如果你有其他方法,請給我你的建議。
讓我們明確一下,我們需要購買所有四種雞。或者傳統(tǒng)的思維方式,建立未知,建立方程。你看,有四個未知數(shù),兩個方程式。為了順利地解決這個問題,我們可以假設(shè)C和D是已知量,這樣a和B可以用含有C和D的公式來表示,請注意這里的C只能取3的整數(shù)倍,如3、6、9等,這里的D只能取4的整數(shù)倍,如4、8、12等,公式中有一個分數(shù),不易計算,容易出錯,需要更換。當m等于1時,n的值由a和B的表達式確定。其他解也可以用同樣的方法得到。