mirror of
https://gitlab.com/mfocko/LeetCode.git
synced 2024-11-10 00:09:06 +01:00
37 lines
433 B
Go
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
|
|
}
|