Leetcode: Valid Mountain Array

Valid Mountain Array



Similar Problems:


Given an array A of integers, return true if and only if it is a valid mountain array.

Recall that A is a mountain array if and only if:

  1. A.length >= 3
  2. There exists some i with 0 < i < A.length – 1 such that:
    • A[0] < A[1] < … A[i-1] < A[i]
    • A[i] > A[i+1] > … > A[B.length – 1]

Example 1:

Input: [2,1]
Output: false

Example 2:

Input: [3,5,5]
Output: false

Example 3:

Input: [0,3,2,1]
Output: true

Note:

  1. 0 <= A.length <= 10000
  2. 0 <= A[i] <= 10000

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.


// Blog link: https://code.dennyzhang.com/valid-mountain-array
// Basic Idea: simple scan
// Complexity: Time O(n), Space O(1)
func validMountainArray(A []int) bool {
    if len(A) < 3 || A[1] <= A[0] { return false }
    // find the first part
    i := 1
    for i < len(A) -1 && A[i] < A[i+1] {
        i++
    }
    if i == len(A) -1 { return false }
    for i < len(A) -1 && A[i] > A[i+1] {
        i++
    }
    return i == len(A) - 1
}
linkedin
github
slack

Share It, If You Like It.

Leave a Reply

Your email address will not be published.