456. 132 Pattern

Doyeon Kim·2022년 9월 16일

코딩테스트 공부

목록 보기
119/171

문제 링크 : https://leetcode.com/problems/132-pattern/


주어진 배열 nums가 132패턴을 따르면 true 아니면 False를 반환하는 문제이다.

1,3,2 패턴을 만족하기 위해서는 예를들어 i,j,k가 있으면 i가 작은 수 j에 큰 수가 오면 맨 마지막 숫자k가 i보다는 크고 j보다는 작아야한다.
따라서 nums에서 작은 수, 큰 수를 stack에 저장하여 이를 이용하여 풀 수 있다.

class Solution:
    def find132pattern(self, nums: List[int]) -> bool:
        stack =[] #pair of i,j
        minn=nums[0]
        for n in nums[1:]:
            while stack and n >= stack[-1][0]:
                stack.pop()
            if stack and n>stack[-1][1]:
                return True
            
            
            stack.append([n,minn])
            minn= min(n,minn)
        return False

22.1230 복습

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글