Similar Problems
Similar Problems not available
Valid Mountain Array - Leetcode Solution
Companies:
LeetCode: Valid Mountain Array Leetcode Solution
Difficulty: Easy
Topics: array
Problem Description:
Given an array of integers arr, return true if and only if it is a valid mountain array.
Recall that arr is a mountain array if and only if:
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]
Example 1:
Input: arr = [2,1] Output: false
Example 2:
Input: arr = [3,5,5] Output: false
Example 3:
Input: arr = [0,3,2,1] Output: true
Solution:
To solve this problem, we can use a two-pointer approach. We start by checking if the array has at least three elements. Then, we initialize two pointers i and j at the beginning and end of the array respectively.
We then move the i pointer to the right as long as arr[i] is strictly less than arr[i+1]. Similarly, we move the j pointer to the left as long as arr[j] is strictly less than arr[j-1].
If either i or j reaches the end of the array before we find a peak, we return false. If we do find a peak, we check if i and j are equal. If they are, we return true, otherwise we return false.
Here's the code:
class Solution { public: bool validMountainArray(vector<int>& arr) { int n = arr.size(); if(n < 3) return false; int i = 0, j = n-1; while(i < n-1 && arr[i] < arr[i+1]) i++; while(j > 0 && arr[j] < arr[j-1]) j--; if(i == 0 || j == n-1 || i != j) return false; return true; } };
Time Complexity:
The time complexity of this solution is O(n), where n is the number of elements in the array, since we only traverse the array once.
Space Complexity:
The space complexity of this solution is O(1), since we do not use any extra data structures.
Valid Mountain Array Solution Code
1