1.题目描述
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。
如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。
请你返回排序后的数组。
2.题目示例
3.思路及代码
- 思路:根据api中的方法可以计算出二进制中1的个数
- 代码:
class Solution {
public int[] sortByBits(int[] arr) {
int[] map = new int[arr.length];
for(int i = 0; i < map.length; i++){
map[i] = Integer.bitCount(arr[i]) * 100000 + arr[i];
}
Arrays.sort(map);
for(int i = 0; i < map.length; i++){
map[i] = map[i] % 100000;
}
return map;
}
}