[Solved] Peak Index in a Mountain Array LeetCode Problem in Java

Peak Index in a Mountain Array: Let’s call an array arr a mountain if the following properties hold:

  • arr.length >= 3
  • There exists some i with 0 < i < arr.length - 1 such that:
    • arr[0] < arr[1] < ... arr[i-1] < arr[i]
    • arr[i] > arr[i+1] > ... > arr[arr.length - 1]

Given an integer array arr that is guaranteed to be a mountain, return any i such that arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1].

Peak Index in a Mountain Array LeetCode

Problem: https://leetcode.com/problems/peak-index-in-a-mountain-array/submissions/

Example 1:

Input: arr = [0,1,0]
Output: 1

Example 2:

Input: arr = [0,2,1,0]
Output: 1

Example 3:

Input: arr = [0,10,5,2]
Output: 1

Constraints:

  • 3 <= arr.length <= 104
  • 0 <= arr[i] <= 106
  • arr is guaranteed to be a mountain array.

Follow up: Finding the O(n) is straightforward, could you find an O(log(n)) solution?

Solution:

Time Complexity: O(logn)

Algorithm: Binary Search

class Solution {
    public int peakIndexInMountainArray(int[] arr) {
        int beg = 0;
        int end = arr.length-1;
        
        int mid = beg - (beg-end)/2;

        while(beg < end){
            
            if(arr[mid]<arr[mid+1]){
                beg = mid + 1;
            }
            else{
                end = mid;
            }
            
            mid = beg - (beg-end)/2;
        }
        return mid;
    }
}
[Solved] Peak Index in a Mountain Array LeetCode Problem in Java
[Solved] Peak Index in a Mountain Array LeetCode Problem in Java
Runtime: 0 ms, faster than 100.00% of Java online submissions for Peak Index in a Mountain Array.
Memory Usage: 46.4 MB, less than 42.95% of Java online submissions for Peak Index in a Mountain Array.
class Solution {
public:
    int peakIndexInMountainArray(vector<int>& arr) {
        int beg = 0;
        int end = arr.size()-1;
        
        int mid = beg - (beg-end)/2;

        while(beg < end){
            
            if(arr[mid]<arr[mid+1]){
                beg = mid + 1;
            }
            else{
                end = mid;
            }
            
            mid = beg - (beg-end)/2;
        }
        return mid;
    }
};
[Solved] Peak Index in a Mountain Array LeetCode Problem in Java
[Solved] Peak Index in a Mountain Array LeetCode Problem in Java
Runtime: 18 ms, faster than 29.17% of C++ online submissions for Peak Index in a Mountain Array.
Memory Usage: 11.4 MB, less than 99.52% of C++ online submissions for Peak Index in a Mountain Array.
class Solution:
    def peakIndexInMountainArray(self, arr: List[int]) -> int:
        beg = 0
        end = len(arr) - 1
        mid = int(beg - (beg - end)/2)
        
        while beg < end:
            if (arr[mid] < arr[mid+1]):
                beg = mid + 1
            
            else:
                end = mid
            
            mid = int(beg - (beg - end)/2)
        
        return mid;
[Solved] Peak Index in a Mountain Array LeetCode Problem in Java
[Solved] Peak Index in a Mountain Array LeetCode Problem in Java
Runtime: 88 ms, faster than 70.84% of Python3 online submissions for Peak Index in a Mountain Array.
Memory Usage: 15.3 MB, less than 59.45% of Python3 online submissions for Peak Index in a Mountain Array.

Happy Learning – If you require any further information, feel free to contact me.

Share your love
Saurav Hathi

Saurav Hathi

I'm currently studying Bachelor of Computer Science at Lovely Professional University in Punjab.

📌 Nodejs and Android 😎
📌 Java

Articles: 444

Leave a Reply

Your email address will not be published. Required fields are marked *