27 lines
425 B
Go
27 lines
425 B
Go
// Package q1356 implements a solution for https://leetcode.com/problems/sort-integers-by-the-number-of-1-bits/
|
|
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
|