1356. 根据数字二进制下 1 的数目排序
题目描述
给你一个整数数组 arr
。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。
如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。
请你返回排序后的数组。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
示例 4:
1 |
|
示例 5:
1 |
|
提示:
1 <= arr.length <= 500
0 <= arr[i] <= 10^4
思路
统计二进制中1的个数
- 可以判断末尾是否为1,然后进行向右移位,移位之后数字为0时则没有1。
使用仿函数
1 |
|
lambda表达式
1 |
|
二进制常见操作
将二进制中最后的一个1
变为0
:x & x-1
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!