[LeetCode] 3105. Longest Strictly Increasing or Strictly Decreasing Subarray (Python)

2025. 2. 3. 23:41·코딩 테스트
728x90

Problem

 

Solution

sliding window

for문으로 하나씩 값을 비교해가면서 decrease, increase 하는 sub array의 최대 길이값을 계산하는 문제.

이때 strictly inc/dec 라서 동일한 숫자가 나오면 안된다.

 

for문 하나로 해결하는게 관건!

 

처음에 아래 다른사람 코드처럼 increasing, decreasing 하는 로직으로 나누어서 푸려고했는데 간과한 점이 있었다.

  • for문을 돌때 0번째가 아닌 1번 인덱스부터 앞 값과 비교할 것
  • 만약 increasing check 의 경우 nums[i] > num[i-1] 가 아니면 tmp_count =1 로 리셋할 것
class Solution:
    def longestMonotonicSubarray(self, nums: List[int]) -> int:
        temp_count = 1
        n = len(nums)
        max_v = 1
        for i in range (1, n):
            if nums[i] > nums[i-1]:
                temp_count += 1
                max_v = max(temp_count, max_v)
            else:
                temp_count = 1
        temp_count = 1
        for i in range (1,n):
            if nums[i] < nums[i-1]:
                temp_count += 1                
                max_v = max(temp_count, max_v)
            else:
                temp_count = 1
        return max_v

 

 

Code

class Solution:
    def longestMonotonicSubarray(self, nums: List[int]) -> int:
        answer = 1
        inc = 1
        dec = 1

        for i in range(1, len(nums)):
            #strictly increasing
            if nums[i] > nums[i-1]:
                inc += 1
                dec = 1 #reset decreasing
            #strictly decreasing
            elif nums[i] < nums[i-1]:
                inc = 1 #reset increasing
                dec += 1
            #equal num
            else:
                inc = dec = 1
            answer = max(max(inc, dec), answer)
        return answer

 

Complexity

Time Complexity

O(N)

 

Space Complexity

사용한 변수 answer, inc, dec => O(1)


참고:

https://medium.com/@cyberseize/leetcode-3105-longest-strictly-increasing-or-strictly-decreasing-subarray-b55af76d34c0

728x90
저작자표시 비영리 변경금지 (새창열림)

'코딩 테스트' 카테고리의 다른 글

[LeetCode] 1726. Tuple with Same Product (Python)  (0) 2025.02.07
[LeetCode] 1800. Maximum Ascending Subarray Sum (Python)  (0) 2025.02.04
[LeetCode] 1752. Check if Array Is Sorted and Rotated (Python)  (0) 2025.02.02
[LeetCode] 637. Average of Levels in Binary Tree (Python)  (0) 2025.02.01
[LeetCode] 3151. Special array 1 (Python)  (1) 2025.02.01
'코딩 테스트' 카테고리의 다른 글
  • [LeetCode] 1726. Tuple with Same Product (Python)
  • [LeetCode] 1800. Maximum Ascending Subarray Sum (Python)
  • [LeetCode] 1752. Check if Array Is Sorted and Rotated (Python)
  • [LeetCode] 637. Average of Levels in Binary Tree (Python)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    금융용어
    리트코드
    Spring
    codility
    java
    Kotlin
    스프링부트
    LeetCode
    이분탐색
    스프링
    카카오코테
    MySQL
    코딩
    C++
    springboot
    자바
    알고리즘
    코딩테스트
    자료구조
    쿠버네티스
    코딜리티
    코테공부
    네트워크
    pythoncodingtest
    CodingTest
    db
    kafka
    프로그래머스
    Python
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[LeetCode] 3105. Longest Strictly Increasing or Strictly Decreasing Subarray (Python)
상단으로

티스토리툴바