34 lines
594 B
Go
34 lines
594 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
// FindPeak finds the peak element in the array
|
|
func findPeak(arr []int) int {
|
|
n := len(arr)
|
|
|
|
// first or last element is peak element
|
|
if n == 1 {
|
|
return 0
|
|
}
|
|
if arr[0] >= arr[1] {
|
|
return 0
|
|
}
|
|
if arr[n-1] >= arr[n-2] {
|
|
return n - 1
|
|
}
|
|
|
|
// check for ever other element
|
|
for i := 1; i < n-1; i++ {
|
|
// check if the neighbors are smaller
|
|
if arr[i] >= arr[i-1] && arr[i] >= arr[i+1] {
|
|
return i
|
|
}
|
|
}
|
|
return -1 // inficating no peak found
|
|
}
|
|
|
|
func main() {
|
|
arr := []int{1, 3, 20, 4, 1, 21, 0}
|
|
fmt.Println("Index of a peak point is", findPeak(arr))
|
|
}
|