파파고번역
정수 배열 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
자바입니다
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