首先因为题目中有:
如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。
所以将arr进行排列
然后再将arr中每个十进制得数字转换为二进制
同时对每个转换后的数字计算出字符1的数量count
再同时将(arr中数字,count)添加到列表a中
再然后按照a中第二位(count)进行排序并加入到列表e中
最后遍历列表只将原数字整合到一个新的空列表f中同时返回f
class Solution:
def sortByBits(self, arr: List[int]) -> List[int]:
a = []
f = []
arr.sort()
for c in arr:
d = bin(c)
count = d.count(str(1))
a.append((c, count))
e = sorted(a ,key = lambda x : x[1])
for i, j in e:
f.append(i)
return f