Skip to content

Latest commit

 

History

History
52 lines (45 loc) · 1.19 KB

File metadata and controls

52 lines (45 loc) · 1.19 KB

941. Valid Mountain Array

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:

  • A.length >= 3
  • 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[A.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

Solutions (Rust)

1. One Pass

impl Solution {
    pub fn valid_mountain_array(a: Vec<i32>) -> bool {
        let length = a.len();
        let mut i = 0;
        while i + 1 < length && a[i] < a[i + 1] {
            i += 1;
        }
        if i == 0 || i + 1 == length {
            return false;
        }
        while i + 1 < length && a[i] > a[i + 1] {
            i += 1;
        }
        i + 1 == length
    }
}