LeetCode/go/special-array-with-x-elements-greater-than-or-equal-x.go

38 lines
433 B
Go
Raw Normal View History

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
}