Swift solution for LeetCode #941. Valid Mountain Array

Updated:




Problem

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]

정수 배열 A가 주어지면, 이 배열이 유효한 ‘산 배열’ 인 경우에만 ‘true’를 리턴하세요.

다음과 같은 경우에만 A가 ‘산 배열’임을 기억하세요:

  • 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

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

  • 0 <= A.length <= 10000
  • 0 <= A[i] <= 10000




Solution

Submissions

  • Runtime: 268 ms, faster than 44.75% of Swift online submissions for Valid Mountain Array.
  • Memory Usage: 20.9 MB, less than 84.09% of Swift online submissions for Valid Mountain Array.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
func validMountainArray(_ A: [Int]) -> Bool {
    guard A.count > 2 else {
        return false
    }
    
    let length = A.count - 1
    var increase = true
    
    for i in 0..<length {
        if increase {
            if A[i] == A[i + 1] {
               return false
            } else if A[i] > A[i + 1] {
                if i < 1 {
                    return false
                }
                increase = false
            }
        } else {
            if A[i] == A[i + 1] {
                return false
            } else if A[i] < A[i + 1] {
                return false
            }
        }
    }
    
    return increase ? false : true
}

Leave a comment