题目
给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。
如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。
请你返回排序后的数组。
示例1:
1 | 输入:arr = [0,1,2,3,4,5,6,7,8] |
示例2:
1 | 输入:arr = [1024,512,256,128,64,32,16,8,4,2,1] |
示例3:
1 | 输入:arr = [10000,10000] |
示例4:
1 | 输入:arr = [2,3,5,7,11,13,17,19] |
示例5:
1 | 输入:arr = [10,100,1000,10000] |
提示:
1 <= arr.length <= 500
0 <= arr[i] <= 10^4
解法
解法一:
自定义排序规则
JAVA
1 | class Value { |