lc-go/solutions/13/q1365/solution.go

28 lines
644 B
Go

// Package q1365 implements a solution for https://leetcode.com/problems/how-many-numbers-are-smaller-than-the-current-number/
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