반응형
LV. Easy 😎
https://leetcode.com/problems/valid-mountain-array/
문제
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]
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
Constraints:
- 1 <= arr.length <= 10^4
- 0 <= arr[i] <= 10^4
문제 해결법
bool flag를 두어 false면 increase 구간이고, true이면 decrease 구간을 확인했다.
increase 구간에서 arr[i - 1] > arr[i] 값이면 decrease 구간으로 전환시켜줬다.
만약 i = 1인 경우에 decrease 구간으로 전환되면 increase 구간은 아예 없는 것이기에 return false
decrease 구간에서 arr[i - 1] < arr[i] 이 값이 나오면 return false
increase 구간, decrease 구간 둘 다 arr[i - 1] = arr[i] 이면 return false 해줬다.
해결 코드
class Solution {
public:
bool validMountainArray(vector<int>& arr) {
// false : increase, true : decrease
bool flag = false;
int size = arr.size();
if (size < 3)
return false;
for (int i = 1; i < size; ++i) {
if (flag == false) {
if (arr[i - 1] > arr[i] && i == 1)
return false;
else if (arr[i - 1] > arr[i])
flag = true;
}
else {
if (arr[i - 1] < arr[i])
return false;
}
if (arr[i - 1] == arr[i])
return false;
}
return flag;
}
};
728x90
'Computer Science > 알고리즘' 카테고리의 다른 글
leetcode 1305) All Elements in Two Binary Search Trees (0) | 2022.01.26 |
---|---|
leetcode 1510) Stone Game IV (0) | 2022.01.25 |
leetcode 1291) Sequential Digits (0) | 2022.01.25 |
leetcode 520) Detect Capital (0) | 2022.01.25 |
leetcode 134) Gas Station (0) | 2022.01.21 |
댓글