KOTLIN 學習 : TREE : LEETCODE EASY 1356. Sort Integers by The Number of 1 Bits

Leetcode 問題: 1356. Sort Integers by The Number of 1 Bits

程式: Github


計算多少個 1 可以用 Integer.bitCount(n)

kotlin 提供 inline function, countOneBits(), 和這相同

我們可以使用 HashMap() , 這樣不用每次計算

排序可以使用 sortWith() , compareBy() 內使用 Lambda, 先按照 1bits 多寡, 

再按照數字大小排列


但這樣有個缺點是, 排序的時候仍會常呼叫 get1BitsNumber()

因此, 修改 Hashmap, 讓 1bits number 為key, 同樣這個 1bits number 的數字 list 為 map value,
而尋訪 map 時, 會自動從 key 小的開始. 我們再將 該 list 排序, 按此順序將值存放傳回


最快方法: 我們觀察題目可以發現, 存放的數字為整數從 0 到 一萬, 因此我們可以將 16 bit 以上的高位存放該數字的 1bit number, 用此排序, 排完再將高位去除即可



結果: 最速




 


留言

熱門文章