26 lines
313 B
Go
26 lines
313 B
Go
package q1356
|
|
|
|
import "slices"
|
|
|
|
func count1s(n int) int {
|
|
c := 0
|
|
for n > 0 {
|
|
c++
|
|
n = n & (n - 1)
|
|
}
|
|
return c
|
|
}
|
|
|
|
func sortByBits(arr []int) []int {
|
|
for i := range arr {
|
|
arr[i] += count1s(arr[i]) << 16
|
|
}
|
|
slices.Sort(arr)
|
|
|
|
for i := range arr {
|
|
arr[i] &= 1<<16 - 1
|
|
}
|
|
return arr
|
|
}
|
|
|
|
var _ = sortByBits
|