24 lines
407 B
Go
24 lines
407 B
Go
package q162
|
|
|
|
// Important constraint: nums[i] != nums[i + 1]
|
|
|
|
func findPeakElement(nums []int) int {
|
|
l, r := 0, len(nums)
|
|
for l < r {
|
|
m := (l + r) / 2
|
|
|
|
lLower := m == 0 || nums[m-1] < nums[m]
|
|
rLower := m == len(nums)-1 || nums[m+1] < nums[m]
|
|
if lLower && rLower {
|
|
return m
|
|
}
|
|
if !lLower { // left side is higher
|
|
r = m
|
|
} else {
|
|
l = m + 1
|
|
}
|
|
}
|
|
return -1
|
|
}
|
|
|
|
var _ = findPeakElement
|