LeetCode/1356. 根据数字二进制下 1 的数目排序
1356. 根据数字二进制下 1 的数目排序
给你一个整数数组 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 <= 5000 <= arr[i] <= 10^4
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
本题有个取巧的地方,就是提示告诉我们每个元素大小不会超过$10^4$,那么就可以调用Java 的 API,将每个元素的二进制形式的1的个数计算出来,然后乘以 100000,然后对其进行排序,最后再将元素还原即可。
具体代码如下:
1 | class Solution { |

