力扣1356.根據數字二進位制下1的數目排序

safre發表於2020-11-06

我們先來看一下題目在這裡插入圖片描述
要求把陣列中的數全都改編成二進位制,而且輸出後每個1數相同的還要重新排序。
要求把同一樣1的數量分為一類,肯定不能直接暴力用很多列表,可以用字典,字典的key就是1的數量,程式碼如下

class Solution:
    def sortByBits(self, arr: List[int]) -> List[int]:

        y = {}
        for i in arr:
            z = list(bin(i))
            c = z.count('1')
            if c not in y:
                y[c] = [i]
            elif c in y:
                y[c].append(i)
        key = sorted(y.keys())
        w = []
        for a in key:
            w += sorted(y[a])
        return w

把二進位制改為列表後,它就會分成一個一個的:

x = '123456'
print(list(x))
['1', '2', '3', '4', '5', '6']

相關文章