문제
An array is monotonic if it is either monotone increasing or monotone decreasing.
An array nums is monotone increasing if for all i <= j, nums[i] <= nums[j]. An array nums is monotone decreasing if for all i <= j, nums[i] >= nums[j].
Given an integer array nums, return true if the given array is monotonic, or false otherwise.
계속 증가하거나, 계속 감소한다면 monotonic이라고 한다. true를 반환한다.
증가하다 감소하게 된다면 false를 반환한다.
예시
ample 1:
Input: nums = [1,2,2,3]
Output: true
Example 2:
Input: nums = [6,5,4,4]
Output: true
Example 3:
Input: nums = [1,3,2]
Output: false
제약 조건
Constraints:
- 1 <= nums.length <= 105
- -105 <= nums[i] <= 105
해결 과정
- 증가, 감소, 유지를 나타낼 변수를 선언한다.
- nums 배열을 완전탐색 한다.
- 만약 nums[i] < nums[i + 1]이라면 증가하는 것이기 때문에 increase를 true로 할당한다.
- 이때, decrease가 true라면 false를 반환한다.
- 만약 nums[i] > nums[i + 1]이라면 감소하는 것이기 때문에 decrease를 true로 할당한다.
- 이때, increase가 true라면 false를 반환한다.
- nums[i] === nums[i +1]일 때 isNone을 true로 할당한다.
- 만약 nums[i] < nums[i + 1]이라면 증가하는 것이기 때문에 increase를 true로 할당한다.
- 순회를 마치고 isIncrease, isDecrease, isNone 셋 중 하나라도 true라면 true를 반환한다.
해결 코드
/**
* @param {number[]} nums
* @return {boolean}
*/
var isMonotonic = function(nums) {
let isIncrease = false;
let isDecrease = false;
let isNone = false;
for(let i = 0 ; i < nums.length ; i++){
if(nums[i] - nums[i + 1] < 0){
if(!!isDecrease) return false;
isIncrease = true;
}else if(nums[i] - nums[i + 1] > 0){
if(!!isIncrease) return false;
isDecrease = true;
}else{
isNone = true;
}
}
return isIncrease || isDecrease || isNone;
};
'leetCode' 카테고리의 다른 글
[Easy] 110. Balanced Binary Tree (0) | 2022.06.13 |
---|---|
[Easy] 459. Repeated Substring Pattern (0) | 2022.06.13 |
[Easy] 28. Implement strStr() (0) | 2022.06.09 |
[Easy] 303. Range Sum Query - Immutable (0) | 2022.06.08 |
[Easy] 1603. Design Parking System (0) | 2022.06.08 |
Comment