leetcode 1356. 根据数字二进制下 1 的数目排序(排序)
给你一个整数数组 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 的数目排序(排序)相关推荐
- 1356. 根据数字二进制下 1 的数目排序
链接:1356. 根据数字二进制下 1 的数目排序 题解:https://leetcode-cn.com/problems/sort-integers-by-the-number-of-1-bits/ ...
- 1356. 根据数字二进制下 1 的数目排序 golang
golang的自定义排序 根据数字二进制下 1 的数目排序 给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须 ...
- 力扣 根据数字二进制下1的数目排序
力扣 根据数字二进制下1的数目排序 题目描述 给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值 ...
- 1356. Sort Integers by The Number of 1 Bits 根据数字二进制下 1 的数目排序
给你一个整数数组 arr .请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序. 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列. 请你返回排序后的数组. 示 ...
- PHP不包括字母,数字和下划线的webshell
文章目录 前言 知识铺垫 PHP中异或(^)概念 PHP取反(~)概念 不用数字构造数字 用字符串自增,获取字符 webshell php5和7的差异. 不用数字和字母的 shell 非字母.数字的字 ...
- java 校验姓名只能包含中英文_java代码验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数...
package com.sangedabuliu.www; import java.util.regex.Matcher; import java.util.regex.Pattern; public ...
- php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字。
php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字.并打印出来 代码如下: //php给定一个起始数字,下标值0,递减的值,求出他所有递减值的开头数字和结尾数字.publ ...
- 『ACM-算法-lowbit』算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位
写在前面:我们主要还是分享算法的模板,而不是去刨析算法的原理! 主要思想是,对于非负整数n,输出n最低位的1所在位,并不断把n赋值成n-(n&-n),直至n=0. 为了提高效率,我们使用Has ...
- 正则数字字母下划线至少两种_8085微处理器中至少两个8位数字
正则数字字母下划线至少两种 Problem statement: 问题陈述: To find minimum of two 8bit numberusing 8085 microprocessor. ...
最新文章
- Jupyter Notebook显示图像
- gif 分支的新建与合并
- 数据到入到excel和打印功能
- Linux内核里的“智能指针” (续)
- 密码学专题 非对称加密算法指令概述 RSA
- socket编程简单Demo讲解及源码分享(C# Winform 内网)
- java aop设计_Spring4.x基础配置(三):Spring AOP
- C语言中register类型变量
- 联想Y9000P安装Ubuntu18.04+PX4+mavros+QGC
- DB2报错原因汇总(sqlcode sqlstate)
- AVR单片机开发11——1602液晶屏幕
- 企业申请SSL证书选择OV证书还是EV证书好
- 聚观早报 | 通信行程卡正式宣布下线;《三体》首日播放量破1亿
- 蓝桥杯题解 鲁卡斯队列 Java答案
- 网络期刊(个人使用)
- Excel中如何快速汇总带单位的数据
- MSF之ms17-010永恒之蓝漏洞利用
- matlab温度等值线图函数,matlab等值线图
- 第四章:文法中的递归以及消除方法
- 《C++primer》第10章:泛型算法
热门文章
- 【算法】学习笔记(1):算法就是人类去教会计算机的方法
- java基础教程哪个好,面试必会
- java特性多态,90%的人看完都说好
- 从草根到百万年薪程序员的十年风雨之路,使用指南
- python学法用法 自动刷分器_Python selenium模拟手动操作实现无人值守刷积分功能...
- 逆向学习-IDApython(一)
- gym100825G. Tray Bien(轮廓线DP)
- javascript如何阻止事件冒泡和默认行为
- HTTP基本认证(Basic Authentication)的JAVA示例
- Android成长日记-Android监听事件的方法