LeetCode: Peak Index in a Mountain Array Posted on June 17, 2018July 26, 2020 by braindenny Peak Index in a Mountain Array Similar Problems: Longest Mountain in Array CheatSheet: Leetcode For Code Interview CheatSheet: Common Code Problems & Follow-ups Tag: #mountainarray, #binarysearch, #monotonicfunc Let’s call an array A a mountain if the following properties hold: A.length >= 3 There exists some 0 < i < A.length – 1 such that A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length – 1] Given an array that is definitely a mountain, return any i such that A[0] < A[1] < … A[i-1] < A[i] > A[i+1] > … > A[A.length – 1]. Example 1: Input: [0,1,0] Output: 1 Example 2: Input: [0,2,1,0] Output: 1 Note: 3 <= A.length <= 10000 0 <= A[i] <= 10^6 A is a mountain, as defined above. Github: code.dennyzhang.com Credits To: leetcode.com Leave me comments, if you have better ways to solve. Solution: binary search // https://code.dennyzhang.com/peak-index-in-a-mountain-array // Basic Ideas: binary search // monotonic function: A[i]<A[i+1] // T, T, T, F, F, F // Complexity: Time O(log(n)), Space O(1) func peakIndexInMountainArray(A []int) int { low, high := 0, len(A)-1 // always exists for low<high { mid := (high-low)/2 + low if A[mid] < A[mid+1] { low = mid+1 } else { high = mid } } return low } Solution: linear search // https://code.dennyzhang.com/peak-index-in-a-mountain-array // Basic Ideas: Too straightforward // Complexity: Time O(n), Space O(1) func peakIndexInMountainArray(A []int) int { for i:=1; i<len(A)-1; i++ { if A[i]>A[i-1] && A[i]>A[i+1] { return i } } return -1 } Post Views: 2 Post navigation LeetCode: Path Sum IVLeetCode: Car Fleet Leave a Reply Cancel replyYour email address will not be published.Comment Name Email Website