lc-go/solutions/13/q1365/solution.go
2026-01-09 18:00:28 +09:00

27 lines
517 B
Go

package q1365
import "slices"
func smallerNumbersThanCurrent(nums []int) []int {
buf := make([]int, 2*len(nums))
positions := buf[0:len(nums)]
for i := range positions {
positions[i] = i
}
slices.SortFunc(positions, func(a, b int) int { return nums[a] - nums[b] })
nLesser := buf[len(nums):]
last := -1
for i, p := range positions {
if nums[p] == last {
nLesser[p] = nLesser[positions[i-1]]
} else {
last = nums[p]
nLesser[p] = i
}
}
return nLesser
}
var _ = smallerNumbersThanCurrent