Cho mảng nums. Sắp xếp tăng dần theo số bit 1 trong biểu diễn nhị phân. Nếu số bit 1 bằng nhau, sắp xếp theo giá trị số.
Ví dụ: nums=[4,1,12,7,6] → [1,4,6,12,7] (bit 1: 1,1,2,2,3).
Giải thuật (Sort với key tùy chỉnh)
- Hàm key:
lambda num: (bin(num).count('1'), num) - Sắp xếp mảng theo key này
Ví dụ triển khai
def solve(nums):
nums.sort(key=lambda num: (bin(num).count("1"), num))
return nums
print(solve([4, 1, 12, 7, 6]))
Đầu vào
[4, 1, 12, 7, 6]
Đầu ra
[1, 4, 6, 12, 7]