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

2021-10-10 07:58:49 字數 1395 閱讀 5837

給你乙個整數陣列arr。請你將陣列中的元素按照其二進位制表示中數字1的數目公升序排序。如果存在多個數字二進位制中1的數目相同,則必須將它們按照數值大小公升序排列。

請你返回排序後的陣列。

示例 1:

輸入:arr = [0,1,2,3,4,5,6,7,8]

輸出:[0,1,2,4,8,3,5,6,7]

解釋:[0] 是唯一乙個有 0 個 1 的數。

[1,2,4,8] 都有 1 個 1 。

[3,5,6] 有 2 個 1 。

[7] 有 3 個 1 。

按照 1 的個數排序得到的結果陣列為 [0,1,2,4,8,3,5,6,7]

示例 2:

輸入:arr = [1024,512,256,128,64,32,16,8,4,2,1]

輸出:[1,2,4,8,16,32,64,128,256,512,1024]

解釋:陣列中所有整數二進位制下都只有 1 個 1 ,所以你需要按照數值大小將它們排序。

示例 3:

輸入:arr = [10000,10000]

輸出:[10000,10000]

示例 4:

輸入:arr = [2,3,5,7,11,13,17,19]

輸出:[2,3,5,17,7,11,13,19]

示例 5:

輸入:arr = [10,100,1000,10000]

輸出:[10,100,10000,1000]

1 <= arr.length <= 500

0 <= arr[i] <= 10^4

題解:

class

solution

:def

sortbybits

(self, arr: list[

int])-

> list[

int]

:return

sorted

(arr, key=

lambda x:

(bin

(x).count(

'1')

,x))

(寫到頭禿,列表字典快繞蒙了,然後才發現還有sorted這個函式)

sorted函式用法:

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

給你乙個整數陣列 arr 請你將陣列中的元素按照其二進位制表示中數字 1 的數目公升序排序。如果存在多個數字二進位制中 1 的數目相同,則必須將它們按照數值大小公升序排列。請你返回排序後的陣列。解答 統計二進位制1的個數可以分別獲取每個二進位制位數,然後再統計其1的個數,此方法效率比較低。這裡介紹另...

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

知識點 class solution while x cp 0 vector反轉的方式 方式1 reverse res.begin res.end 方式2 return static int countones const vector b return cnt static bool mycmp ...

力扣 二進位制求和

給定兩個二進位制字串,返回他們的和 用二進位制表示 輸入為非空字串且只包含數字 1 和 0。示例 1 輸入 a 11 b 1 輸出 100 示例 2 輸入 a 1010 b 1011 輸出 10101 首先判斷兩個字串的長度,找到最長的那個,將兩個字串反轉,再將短的那乙個用字元 0 補齊 定義乙個字...