java笔试--十进制数字二进制的个数(比较器)

Integer二进制函数:

  1. public static int bitCount(int i):数字i的二进制中1的个数
  2. public static String toBinaryString(int i):将十进制i转化为二进制
  3. public static String toOctalString(int i):将十进制i转化为八进制
  4. public static String toHexString(int i):将十进制i转化为十六进制

题目:1356. 根据数字二进制下 1 的数目排序

方法一:将元素于二进制个数相关联。

可以将每一个数字的二进制中1的数量于数字本身相关联,所以可以采用在数字原本的基础上Integer.bitCount(arr[i])*10001+arr[i](10001是因为数组的最大值只能是10000.)。在进行排序。

class Solution {
    public int[] sortByBits(int[] arr) {
        for(int i=0;i

方法二:实现自定义的构造器

class Solution {
    public int[] sortByBits(int[] arr) {
        Integer[] a=new Integer[arr.length];
        for(int i=0;i(){
            public int compare(Integer a,Integer b){
                if(Integer.bitCount(a)!=Integer.bitCount(b)){
                    return Integer.bitCount(a)-Integer.bitCount(b);
                }else {
                    return a-b;
                } 

你可能感兴趣的:(春招--笔试)