leetcode(리트코드)941-Valid Mountain Array
leetcode(리트코드)941-Valid Mountain Array
leetcode Array intro - Valid Mountain Array 문제입니다.
1. 문제
https://leetcode.com/problems/number-of-1-bits/
2. Input , Output
3. 분류 및 난이도
Eazy 난이도입니다.
4. 문제 해석
- 배열을 돌면서 오름차순, 내림차순이 한 번 있으면 true를 반환합니다. 값이 같으면 안됩니다.
5. code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
bool validMountainArray(vector<int>& arr) {
bool downhill =false;
for(size_t i=0;i<arr.size()-1;++i)
{
if(arr[i]==arr[i+1])
return false;
//내리막길
if(arr[i]>arr[i+1])
downhill=true;
if(downhill && i==0)
return false;
//오르막길
if(downhill && arr[i] <=arr[i+1])
return false;
}
return downhill;
}
};
6. 결과 및 후기, 개선점
0ms인 사람의 java코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public boolean validMountainArray(int[] A) {
int N = A.length;
int i = 0;
// walk up
while (i+1 < N && A[i] < A[i+1])
i++;
// peak can't be first or last
if (i == 0 || i == N-1)
return false;
// walk down
while (i+1 < N && A[i] > A[i+1])
i++;
return i == N-1;
}
}
코드 해석을 하면, 올라가는 길인 경우 인덱스를 계속 더해줍니다.
그 이후 i==0(오르막길이 없었음) or i==N-1(끝의 인덱스까지 쭉 오르막길인 경우) return false를 해줍니다.
그 이후는 내리막길이므로 ++i를 해주고 i가 N-1(마지막 인덱스)인 경우 true를 반환합니다. 두 개의 산맥이 있을 경우를 제외한 것 같습니다.
This post is licensed under CC BY 4.0 by the author.