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