阅读视图

发现新文章,点击刷新页面。

Java 两次循环打败 100%

解题思路

循环并使用 Integer.bitCount 计算数字中1的个数,乘以10000000(题目中不会大于 10^4)然后加上原数字,放入数组 map 中,并对 map 进行排序,最后 % 10000000 获取原来的数组,填充到原数组返回即可。

image.png{:width="350px"}{:align="left"}

代码

###Java

class Solution {
    public int[] sortByBits(int[] arr) {
        int[] map = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            map[i] = Integer.bitCount(arr[i]) * 10000000 + arr[i];
        }
        Arrays.sort(map);
        for (int i = 0; i < map.length; i++) {
            map[i] = map[i] % 10000000;
        }
        return map;
    }
}
❌