[LeetCode]Valid Mountain Array

오트밀·2022년 1월 25일
0
class Solution {
    public boolean validMountainArray(int[] arr) {
        //max element의 i를 구하고 
        //그 위치까지 모든 element가 증가하는지 확인
        // max 이후 부터의 i에서는 element가 감소하는지 확인
        int max = arr[0];
        int maxIdx = 0;
        boolean ascending = false;
        boolean descending = false;
        for(int i = 0; i < arr.length; i++){
            if(arr[i] > max){
                max = arr[i];
                maxIdx = i;
            }
        }
        
        for(int i = 0; i < maxIdx; i++){
            if(arr[i] < arr[i+1]){
                ascending = true;
            }else{
                ascending = false;
                break;
            }
        }
        
        for(int i = maxIdx ; i < arr.length-1; i++){
            if(arr[i] > arr[i+1]){
                descending = true;
            }else{
                descending = false;
                break;
            }
        }
     return ascending && descending;   
    }
}

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

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]

inetger배열 arr가 주어진다. 오직 산의 형태(정상까지 계속 증가, 정상 이후로 계속 감소)인 배열일 때만 true를 return하라.

첫 for문으로 max와 maxIndex를 구하고 두번째 for문으로 maxIndex까지 증가하는지 확인, 세번째 for문으로 maxIndex부터 감소하는지 확인

ascending, descending for문이 진행되는중에 한번이라도 조건에 해당하지 않는 i가 있다면 break로 빠져나온다. (*maxIndex까지 지속적으로 증가, maxIndex부터 지속적으로 감소하는 배열을 찾는것이 조건이기 때문에 하나의 element라도 규칙에 어긋나면 안됨)

for 문이 세개나 들어가서 복잡하다. 수정해야할듯

profile
루틴을 만들자

0개의 댓글