给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。

如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。

请你返回排序后的数组。

示例 1:

输入:arr = [0,1,2,3,4,5,6,7,8]
输出:[0,1,2,4,8,3,5,6,7]
解释:[0] 是唯一一个有 0 个 1 的数。
[1,2,4,8] 都有 1 个 1 。
[3,5,6] 有 2 个 1 。
[7] 有 3 个 1 。
按照 1 的个数排序得到的结果数组为 [0,1,2,4,8,3,5,6,7]
示例 2:

输入:arr = [1024,512,256,128,64,32,16,8,4,2,1]
输出:[1,2,4,8,16,32,64,128,256,512,1024]
解释:数组中所有整数二进制下都只有 1 个 1 ,所以你需要按照数值大小将它们排序。

代码

        public int[] sortByBits(int[] arr) {int[][] temp=new int[arr.length][2];for(int i=0;i<arr.length;i++)//二维数组存储1的个数和原来的数字{temp[i][0]=arr[i];temp[i][1]=grtBits(arr[i]);}Arrays.sort(temp,(o1, o2) -> o1[1]==o2[1]?o1[0]-o2[0]:o1[1]-o2[1]);//排序for(int i=0;i<arr.length;i++)//写入结果{arr[i]=temp[i][0];}return arr;}public int  grtBits(int arr) {//获取数字中1的个数int ret=0;for(int i=0;i<32;i++){ret+=(arr&1);arr=(arr>>1);}return ret;}
}

leetcode 1356. 根据数字二进制下 1 的数目排序(排序)相关推荐

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

    链接:1356. 根据数字二进制下 1 的数目排序 题解:https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits/ ...

  2. 1356. 根据数字二进制下 1 的数目排序 golang

    golang的自定义排序 根据数字二进制下 1 的数目排序 给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须 ...

  3. 力扣 根据数字二进制下1的数目排序

    力扣 根据数字二进制下1的数目排序 题目描述 给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值 ...

  4. 1356. Sort Integers by The Number of 1 Bits 根据数字二进制下 1 的数目排序

    给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列. 请你返回排序后的数组.   示 ...

  5. PHP不包括字母,数字和下划线的webshell

    文章目录 前言 知识铺垫 PHP中异或(^)概念 PHP取反(~)概念 不用数字构造数字 用字符串自增,获取字符 webshell php5和7的差异. 不用数字和字母的 shell 非字母.数字的字 ...

  6. java 校验姓名只能包含中英文_java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数...

    package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...

  7. php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字。

    php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字.并打印出来 代码如下: //php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字.publ ...

  8. 『ACM-算法-lowbit』算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位

    写在前面:我们主要还是分享算法的模板,而不是去刨析算法的原理! 主要思想是,对于非负整数n,输出n最低位的1所在位,并不断把n赋值成n-(n&-n),直至n=0. 为了提高效率,我们使用Has ...

  9. 正则数字字母下划线至少两种_8085微处理器中至少两个8位数字

    正则数字字母下划线至少两种 Problem statement: 问题陈述: To find minimum of two 8bit numberusing 8085 microprocessor. ...

最新文章

  1. Jupyter Notebook显示图像
  2. gif 分支的新建与合并
  3. 数据到入到excel和打印功能
  4. Linux内核里的“智能指针” (续)
  5. 密码学专题 非对称加密算法指令概述 RSA
  6. socket编程简单Demo讲解及源码分享(C# Winform 内网)
  7. java aop设计_Spring4.x基础配置(三):Spring AOP
  8. C语言中register类型变量
  9. 联想Y9000P安装Ubuntu18.04+PX4+mavros+QGC
  10. DB2报错原因汇总(sqlcode sqlstate)
  11. AVR单片机开发11——1602液晶屏幕
  12. 企业申请SSL证书选择OV证书还是EV证书好
  13. 聚观早报 | 通信行程卡正式宣布下线;《三体》首日播放量破1亿
  14. 蓝桥杯题解 鲁卡斯队列 Java答案
  15. 网络期刊(个人使用)
  16. Excel中如何快速汇总带单位的数据
  17. MSF之ms17-010永恒之蓝漏洞利用
  18. matlab温度等值线图函数,matlab等值线图
  19. 第四章:文法中的递归以及消除方法
  20. 《C++primer》第10章:泛型算法

热门文章

  1. 【算法】学习笔记(1):算法就是人类去教会计算机的方法
  2. java基础教程哪个好,面试必会
  3. java特性多态,90%的人看完都说好
  4. 从草根到百万年薪程序员的十年风雨之路,使用指南
  5. python学法用法 自动刷分器_Python selenium模拟手动操作实现无人值守刷积分功能...
  6. 逆向学习-IDApython(一)
  7. gym100825G. Tray Bien(轮廓线DP)
  8. javascript如何阻止事件冒泡和默认行为
  9. HTTP基本认证(Basic Authentication)的JAVA示例
  10. Android成长日记-Android监听事件的方法