09 Sept 2026Go / Python / TypeScriptEasy

Valid Mountain Array

Check whether an array strictly rises to an interior peak and then strictly falls.

Walk up the increasing slope, reject endpoint peaks, then walk down and require reaching the final element.

complexity

O(n) time and O(1) space.

solution files

  • Go valid-mountain-array/solution.go
  • Python valid-mountain-array/solution.py
  • TypeScript valid-mountain-array/solution.ts

Solution files

Govalid-mountain-array/solution.go
package main

func validMountainArray(arr []int) bool {
	index := 0
	for index+1 < len(arr) && arr[index] < arr[index+1] {
		index++
	}
	if index == 0 || index == len(arr)-1 {
		return false
	}
	for index+1 < len(arr) && arr[index] > arr[index+1] {
		index++
	}
	return index == len(arr)-1
}
Pythonvalid-mountain-array/solution.py
class Solution:
    def validMountainArray(self, arr: list[int]) -> bool:
        index = class="syntax-number">0
        while index + class="syntax-number">1 < len(arr) and arr[index] < arr[index + class="syntax-number">1]: index += class="syntax-number">1
        if index == class="syntax-number">0 or index == len(arr) - class="syntax-number">1: return False
        while index + class="syntax-number">1 < len(arr) and arr[index] > arr[index + class="syntax-number">1]: index += class="syntax-number">1
        return index == len(arr) - class="syntax-number">1
TypeScriptvalid-mountain-array/solution.ts
function validMountainArray(arr: number[]): boolean {
  let index = class="syntax-number">0;
  while (index + class="syntax-number">1 < arr.length && arr[index] < arr[index + class="syntax-number">1]) index += class="syntax-number">1;
  if (index === class="syntax-number">0 || index === arr.length - class="syntax-number">1) return false;
  while (index + class="syntax-number">1 < arr.length && arr[index] > arr[index + class="syntax-number">1]) index += class="syntax-number">1;
  return index === arr.length - class="syntax-number">1;
}