반응형
LV. Easy 😎
https://leetcode.com/problems/valid-mountain-array/
Valid Mountain Array - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제
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 |
댓글