Notice
250x250
Recent Posts
Recent Comments
Link
넘치게 채우기
[LeetCode] 3105. Longest Strictly Increasing or Strictly Decreasing Subarray 본문
PS/LeetCode
[LeetCode] 3105. Longest Strictly Increasing or Strictly Decreasing Subarray
riveroverflow 2025. 2. 3. 16:45728x90
반응형
leetcode - Longest Strictly Increasing or Strictly Decreasing Subarray
문제 유형: 슬라이딩 윈도우
문제 난이도: Easy
문제
You are given an array of integers nums. Return the length of the longest subarray of nums which is either strictly increasing or strictly decreasing.
정수 배열 nums가 주어진다. 가장 긴 오름차순 또는 내림차순 부분배열의 길이를 구하시오.
풀이
길이 1부터 시작한다. 0번칸은 0이기 때문이다.
i번칸이 i-1번칸보다 크면 증가스트릭을 1 증가시키고, 감소스트릭을 1로 만든다.
i번칸이 i-1번칸보다 작으면 감소스트릭을 1 감소시키고, 증가스트릭을 1로 만든다.
i번칸이 i-1번칸과 같으면 두 스트릭 모두 1로 초기화한다.
그리고 매번 최대값을 갱신시킨다.
최종적인 최대값을 반환하면 된다.
코드
C++
class Solution {
public:
int longestMonotonicSubarray(vector<int>& nums) {
int n = nums.size() ;
if(n == 1) return 1;
int incStreak = 1;
int decStreak = 1;
int ans = 0;
for(int i = 1; i < n; ++i) {
if(nums[i] > nums[i-1]) {
decStreak++;
incStreak = 1;
} else if(nums[i] < nums[i-1]) {
incStreak++;
decStreak = 1;
} else {
incStreak = 1;
decStreak = 1;
}
ans = max(ans, max(incStreak, decStreak));
}
return ans;
}
};
func max(a, b int) int {
if a > b {
return a
}
return b
}
func longestMonotonicSubarray(nums []int) int {
n := len(nums)
if n == 1 {
return 1;
}
incStreak := 1
decStreak := 1
ans := 0
for i := 1; i < n; i++ {
if nums[i] > nums[i-1] {
decStreak++
incStreak = 1
} else if nums[i] < nums[i-1] {
incStreak++
decStreak = 1
} else {
incStreak = 1
decStreak = 1
}
ans = max(ans, max(incStreak, decStreak))
}
return ans
}
728x90
반응형
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 1752. Check if Array Is Sorted and Rotated (0) | 2025.02.02 |
---|---|
[LeetCode] 3151. Special Array I (0) | 2025.02.01 |
[LeetCode] 827. Making A Large Island (0) | 2025.01.31 |
[LeetCode] 2493. Divide Nodes Into the Maximum Number of Groups (0) | 2025.01.31 |
[LeetCode] 684. Redundant Connection (0) | 2025.01.29 |