Leetcode - Valid Mountain Array

·2022년 1월 25일
0

Algorithm

목록 보기
11/19
post-thumbnail

Problem

Valid Mountain Array
Given an array of integers arr, return true if and only if it is a valid mountain array.
주어진 정수 배열이 산 배열이면 true를 반환하시오

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

Constraints:

  • 1 <= arr.length <= 10⁴
  • 0 <= arr[i] <= 10⁴

Solution

JavaScript

/**
 * @param {number[]} arr
 * @return {boolean}
 */
var validMountainArray = function(arr) {
    if(arr.length < 3) return false // 길이가 3보다 작으면 산 배열이 아님
  
    const biggest_num = Math.max(...arr)
    const biggest_num_idx = arr.indexOf(biggest_num)
    
    // 가장 큰 수가 배열의 첫번째에 있거나 제일 마지막에 있으면 산 배열이 될 수 없음
    if(biggest_num_idx === 0 || biggest_num_idx === arr.length - 1) return false
    
    for(let i = 1; i < arr.length; i++) {
        if( i <= biggest_num_idx ) {
          // 가장 큰 수를 기준으로 분기점 (산 배열이니 오르락 내리락을 판단이 필요)
            if(arr[i - 1] >= arr[i]) return false
        } else {
            if(arr[i - 1] <= arr[i]) return false
        }
    }
    return true
};

runtime 속도는 다른 사람들보다 좀 걸리는 편이지만 메모리 사용이 적은 방법이었다

Feedback은 언제나 환영입니다🤗

profile
You only get one life. It's actually your duty to live it as fully as possible.

0개의 댓글