方法一:
class Solution:
def sortByBits(self, arr: List[int]) -> List[int]:
def _bin(x):
res = 0
while x:
x = x&(x-1)
res += 1
return res
return sorted(arr, key = lambda x:[_bin(x), x])
class Solution:
def sortByBits(self, arr: List[int]) -> List[int]:
return sorted(arr, key = lambda x: (bin(x).count('1'), x))```
方法二:冒泡排序
```python
class Solution:
def sortByBits(self, arr: List[int]) -> List[int]:
lenth = len(arr)
if lenth == 1:
return arr
for i in range(lenth):
for j in range(i, lenth):
a = self.oneNum(arr[j])
b = self.oneNum(arr[i])
if a < b:
arr[i], arr[j] = arr[j], arr[i]
elif a == b:
if arr[j] < arr[i]:
arr[j], arr[i] = arr[i], arr[j]
else:
continue
return arr
def oneNum(self, num):
x = 0
while num != 0:
x += 1
num = num&(num-1)
return x
class Solution:
def sortByBits(self, arr: List[int]) -> List[int]:
lenth = len(arr)
if lenth == 1:
return arr
for i in range(lenth):
for j in range(i, lenth):
a = bin(arr[j]).count("1")
b = bin(arr[i]).count("1")
if a < b:
arr[i], arr[j] = arr[j], arr[i]
elif a == b:
if arr[j] < arr[i]:
arr[j], arr[i] = arr[i], arr[j]
else:
continue
return arr