链接
解法一
数组重赋值
//数组重赋值,由于题目限定arr[i] 中的数不超过 10000
public int[] sortByBits(int[] arr)
{
int[] ret = new int[arr.length];
for (int i = 0; i < arr.length; i++)
{
//这个数字不能小于等于10000
ret[i] = Integer.bitCount(arr[i]) * 10001 + arr[i];
}
Arrays.sort(ret);
for (int i = 0; i < ret.length; i++)
{
ret[i] = ret[i] % 10001;
}
return ret;
}
解法二
冒泡排序法
public int[] sortByBits(int[] arr)
{
//先排序
Arrays.sort(arr);
//按照比特位个数进行冒泡排序
for (int i = 0; i < arr.length - 1; i++)
{
for (int j = 0; j < arr.length - i - 1; j++)
{
if (Integer.bitCount(arr[j]) > Integer.bitCount(arr[j + 1]))
{
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
return arr;
}