lc-go/solutions/36/q3634/solution.go

34 lines
587 B
Go

// Package q3634 implements a solution for https://leetcode.com/problems/minimum-removals-to-balance-array/
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