From b7a6218dbc8bc782bc8f060026777d03fc7a5df6 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Mon, 3 Feb 2025 21:49:51 +0900 Subject: [PATCH] https://leetcode.com/problems/longest-strictly-increasing-or-strictly-decreasing-subarray --- ...reasing_or_strictly_decreasing_subarray.py | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 easy/longest_strictly_increasing_or_strictly_decreasing_subarray.py diff --git a/easy/longest_strictly_increasing_or_strictly_decreasing_subarray.py b/easy/longest_strictly_increasing_or_strictly_decreasing_subarray.py new file mode 100644 index 0000000..982eba1 --- /dev/null +++ b/easy/longest_strictly_increasing_or_strictly_decreasing_subarray.py @@ -0,0 +1,26 @@ +# https://leetcode.com/problems/longest-strictly-increasing-or-strictly-decreasing-subarray + +from typing import List + +class Solution: + def longestMonotonicSubarray(self, nums: List[int]) -> int: + if len(nums) <= 1: + return len(nums) + inc_cnt = 0 + curr_inc_cnt = 1 + dec_cnt = 0 + curr_dec_cnt = 1 + for i in range(1, len(nums)): + if nums[i - 1] > nums[i]: + curr_dec_cnt += 1 + else: + dec_cnt = max(dec_cnt, curr_dec_cnt) + curr_dec_cnt = 1 + if nums[i - 1] < nums[i]: + curr_inc_cnt += 1 + else: + inc_cnt = max(inc_cnt, curr_inc_cnt) + curr_inc_cnt = 1 + dec_cnt = max(dec_cnt, curr_dec_cnt) + inc_cnt = max(inc_cnt, curr_inc_cnt) + return max(inc_cnt, dec_cnt)