class Solution { public int[] sortByBits(int[] arr) { List<Integer> list = new ArrayList<Integer>(); for (int x : arr) { list.add(x); } int[] bit = new int[10001]; for (int i = 1; i <= 10000; ++i) { bit = bit[i >> 1] + (i & 1); } Collections.sort(list, new Comparator<Integer>() { public int compare(Integer x, Integer y) { if (bit[x] != bit[y]) { return bit[x] - bit[y]; } else { return x - y; } } }); for (int i = 0; i < arr.length; ++i) { arr = list.get(i); } return arr; }}