LeetCode - 941. Valid Mountain Array(Array)*

YAMAMAMO·2022년 1월 29일
0

LeetCode

목록 보기
7/100

문제

파파고번역
정수 배열 arr이 지정되면 올바른 마운틴 배열인 경우에만 true를 반환합니다.
다음과 같은 경우에만 arr이 산악 배열임을 기억하십시오.

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

풀이

자바입니다

  • 최대값 위치를 찾는다.
  • 최대값 위치가 0 이거나 배열의 마지막인지 확인한다.
  • 최대값 위치를 기준으로 마주한 배열값 크기 비교를 한다.
class Solution {
    public boolean validMountainArray(int[] arr) {
        int max = arr[0];
        int pos=0; 
        //최대값 위치를 구한다.
        for(int i=1;i<arr.length;i++){
            if(max<arr[i]){
                max=arr[i];
                pos=i;
            }
        }
        if(pos==0||pos==arr.length-1) return false;
        
        int j = 0;
        for(int i=1;i<arr.length;i++){
            if(i<pos){
                if(arr[j]>=arr[i]) return false;
            
            }else{
                if(arr[j]<=arr[i]&&pos!=i) return false;           
            }
            j++;
        }
        return true;
    }
}

인상적인 풀이
다른 풀이를 보다가 굉장히 인상깊은 풀이를 찾았습니다.
start, end two pointer를 사용해서 푸는 방법입니다.
참고하기 위해 코드와 링크를 남깁니다.

  class Solution {
    public boolean validMountainArray(int[] A) {
      if (A.length < 3) return false;
      int start = 0;
      int end = A.length-1;
      while (start < end) {
        if (A[start+1] > A[start]) {
          start++;
        } else if (A[end-1] > A[end]) { 
          end--;
        } else {
          break;
        }
      }
      return start != 0 && end != A.length-1 && start == end;
    }
}

https://leetcode.com/problems/valid-mountain-array/discuss/293527/JAVA-100

profile
안드로이드 개발자

0개의 댓글