Leetcode Java Valid Mountain Array
업데이트:
문제
코드
class Solution {
public boolean validMountainArray(int[] arr) {
if (arr.length < 3 || arr[0] >= arr[1]) {
return false;
}
boolean decrease = false;
for (int i = 2; i < arr.length; i++) {
if (arr[i - 1] > arr[i]) {
decrease = true;
} else if (arr[i - 1] == arr[i] || decrease) {
return false;
}
}
return decrease;
}
}
결과
설명
- 산의 높이로 이루어진 arr의 값들이 아래의 조건을 만족하는 산 모양으로 이루어져 있는지 검증하는 문제이다.
- arr의 길이가 3 이상이어야 산 모양을 유지할 수 있다.
- 산 정상인 i번째 위치 이전과 이후는 점층적인 값의 증가와 감소로만 이루어져야 한다.
-
arr의 길이가 3 미만이거나 arr의 첫 값이 다음 값보다 크거나 같으면, 산 모양을 이룰 수 없으므로 false를 주어진 문제의 결과로 반환한다.
-
decrease는 점층적으로 감소하는 추세로 변환되었는지 저장하기 위한 변수로, 처음은 점층적으로 증가해야 하므로 false를 넣어준다.
- 2부터 arr의 길이 미만까지 i를 증가시키며 아래를 검증한다.
- arr의 $i - 1$번째 값이 i번째 값보다 크면, 감소하는 추세로 변화하였으므로 decrease에 true를 넣어준다.
- arr의 $i - 1$번째 값과 i번째 값이 동일하거나 decrease가 true이면, 조건을 만족하는 산의 모양을 유지하지 않으므로 false를 주어진 문제의 결과로 반환한다.
- 반복이 완료되면 감소하는 추세가 계속 유지했는지 여부인 decrease의 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기