java大數(shù)據(jù) 一道java面試題,20億數(shù)字的文本排序,如何取前100?
一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個(gè)Java問題,所以這是典型的TOPK問題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最
一道java面試題,20億數(shù)字的文本排序,如何取前100?
因?yàn)檫@是一個(gè)Java問題,所以這是典型的TOPK問題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最后100個(gè)元素就是結(jié)果??臻g復(fù)雜度為k,時(shí)間復(fù)雜度為nlogk。我建議轉(zhuǎn)向大數(shù)據(jù)。
我也從事java開發(fā),我對(duì)這個(gè)主題的糾纏也有同樣的感受。畢竟,如果我精通Java,我已經(jīng)付出了大量的學(xué)習(xí)精力。如果我學(xué)習(xí)機(jī)器學(xué)習(xí),我基本上想告別Java,這無(wú)疑是一個(gè)非常不幸的選擇。
此外,轉(zhuǎn)向機(jī)器學(xué)習(xí)不僅需要深入了解python,還需要掌握數(shù)學(xué)算法,這是不可能一蹴而就的。因此,轉(zhuǎn)向人工智能的風(fēng)險(xiǎn)相對(duì)較高,很容易打亂一個(gè)人的職業(yè)規(guī)劃。
目前,大數(shù)據(jù)方向仍是一個(gè)需求量大、前景好的工作方向。Java廣泛應(yīng)用于大數(shù)據(jù)領(lǐng)域。單憑Hadoop生態(tài)系統(tǒng)就足以完成大量的大數(shù)據(jù)工作,而Hadoop和Java是分不開的。
最重要的是大數(shù)據(jù)方向不會(huì)低于機(jī)器學(xué)習(xí)的工資,機(jī)器學(xué)習(xí)還處于初級(jí)階段。別擔(dān)心工資問題。