給你乙個整數陣列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 補齊 定義乙個字...