LeetCode/go/special-array-with-x-elements-greater-than-or-equal-x.go
Matej Focko d2ef757754
go: allow testing
Signed-off-by: Matej Focko <me@mfocko.xyz>
2024-06-16 11:44:08 +02:00

37 lines
433 B
Go

package main
import (
"slices"
)
func specialArray(nums []int) int {
bsearch := func(key int) int {
l := 0
r := len(nums) - 1
idx := len(nums)
for l <= r {
mid := (l + r) / 2
if nums[mid] >= key {
idx = mid
r = mid - 1
} else {
l = mid + 1
}
}
return idx
}
slices.Sort(nums)
for i, _ := range nums {
k := bsearch(i + 1)
if len(nums)-k == i+1 {
return i + 1
}
}
return -1
}