33 lines
479 B
Go
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
|