lc-go/solutions/36/q3634/solution.go
2026-02-09 10:55:02 +09:00

33 lines
479 B
Go

package q3634
import "slices"
const INF int = 1<<63 - 1
func minRemoval(nums []int, k int) int {
slices.Sort(nums)
minRem := INF
for i := 0; i < min(len(nums), minRem); i++ {
if i > 0 && nums[i] == nums[i-1] {
continue
}
target := nums[i] * k
l, r := i, len(nums)
for l < r {
m := (l + r) / 2
switch {
case nums[m] > target:
r = m
default:
l = m + 1
}
}
minRem = min(minRem, i+len(nums)-l)
}
return minRem
}
var _ = minRemoval