lc-go/solutions/1/q162/solution.go

25 lines
498 B
Go

// Package q162 implements a solution for https://leetcode.com/problems/find-peak-element/
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