zoukankan      html  css  js  c++  java
  • 根据数字二进制下 1 的数目排序


    错误代码

    Arrays.sort(arr,(l,r)->l-r)后面自定义必须是类

    正确代码

    class Solution {
    
        public int[] sortByBits(int[] arr) {
            int n = arr.length;
            int[] res = new int[n];
            Node[] nodes = new Node[n];
            for(int i=0;i<n;i++){
                nodes[i] = new Node(arr[i],oneNum(arr[i]));
            }
            //对于后面用(l,r)->l-r之类的,l和r必须是封装类型否则会报错
            Arrays.sort(nodes,(l,r)->{
                if(l.bitCnt != r.bitCnt) return l.bitCnt - r.bitCnt;
                return l.val - r.val;
            });
            for(int i=0;i<n;i++){
                res[i] = nodes[i].val;
            }
            return res;
    
    
       
        }
        public int oneNum(int num){
            int cnt = 0;
            while(num != 0){
                cnt++;
                num = num & (num-1);//消去最右边的1
            }
            return cnt;
    
        }
    }
    class Node{
        int val;
        int bitCnt;
        Node(int val,int bitCnt){
            this.val = val;
            this.bitCnt = bitCnt;
        }
    }
    
    

  • 相关阅读:
    Day10
    Day9
    Day8
    Day 7
    Day-6
    java中的原子性
    java 原子性
    内存可见性
    JVM 常忘笔记
    JVM 解释执行 编译执行 JIT
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13939124.html
Copyright © 2011-2022 走看看