코딩테스트 풀이/JAVA
[LeetCode/Easy] 896. Monotonic Array
무지맘
2022. 12. 10. 19:36
1. Input
1) int 배열 nums
2. Output
1) nums의 요소가 계속 감소하거나 계속 증가하면 true를, 아니면 false를 반환
2) 계속 증가한다는 것은 모든 i <= j에 대해 nums[i] <= nums[j]라는 것이고, 계속 감소한다는 것은 모든 i <= j에 대해 nums[i] >= nums[j]라는 것이다.
3. Constraint
1) 1 <= nums.length <= 10^5
2) - 10^5 <= nums[i] <= 10^5
4. Example
Input: nums = [1,3,2] -> Output: false
Input: nums = [6,5,4,4] -> Output: true
5. Code
1) 첫 코드(2022/07/11)
boolean answer = true;
if(nums.length == 1)
return answer;
if(nums[0]<nums[1]){
for(int i=1 ; i<nums.length-1 ; i++)
if(nums[i]>nums[i+1]){
answer = false;
break;
}
}else if(nums[0]==nums[1]){
int index = 0;
for(int i=1 ; i<nums.length-1 ; i++)
if(nums[i]!=nums[i+1]){
index = i;
break;
}
if(nums[index]>nums[index+1]){
for(int i=index+1 ; i<nums.length-1 ; i++)
if(nums[i]<nums[i+1]){
answer = false;
break;
}
} else{
for(int i=index+1 ; i<nums.length-1 ; i++)
if(nums[i]>nums[i+1]){
answer = false;
break;
}
}
} else{
for(int i=1 ; i<nums.length-1 ; i++)
if(nums[i]<nums[i+1]){
answer = false;
break;
}
}
return answer;
2) 다시 풀어본 코드(2022/12/10)
boolean answer = true;
if(nums[0] - nums[nums.length-1] < 0){
for(int i=0 ; i<nums.length-1 ; i++)
if(nums[i]>nums[i+1]){
answer = false ; break;
}
} else{
for(int i=0 ; i<nums.length-1 ; i++)
if(nums[i]<nums[i+1]){
answer = false ; break;
}
}
return answer;
- 1번보다 훨씬 간결하면서도 빠르고, 공간절약도 많이 된다.