java web 一道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
使用string類(lèi)的substring(int-from,int-to)方法截?cái)辔恢脼閒rom-to-1的字符。子串(int-index)方法用于截?cái)辔恢脼閕ndex-1或更高的字符。注意字符串的字符位置從0開(kāi)始,substring(int-from,int-to)方法用于截?cái)辔恢脧?1到-1的字符。該方法是前閉后開(kāi)的,即[from,to],可以理解為[from,to-1]。示例:String name=“你好世界”系統(tǒng)輸出打印( 名稱(chēng).子字符串( 名稱(chēng).長(zhǎng)度()-1, 名稱(chēng).長(zhǎng)度())//輸出dSystem.out.println( 名稱(chēng).子字符串( 名稱(chēng).長(zhǎng)度()-1))//輸出D