Post

leetcode(리트코드)-503 Next Greater Element II(PYTHON)

leetcode 503 - Next Greater Element II 문제입니다.

1. 문제

https://leetcode.com/problems/next-greater-element-ii/


2. Input , Output


3. 분류 및 난이도

Medium 난이도 문제입니다.


4. 문제 해석

  • 배열을 볼 때 인덱스를 기준으로 오른쪽으로 탐색할 때 해당 인덱스보다 큰 값을 결과 리스트에 담아 리턴합니다. 만약 제일 큰 값이면 -1를 넣고, 기존 리스트의 맨 끝까지 탐색했는데 없다면 다시 맨앞부터 탐색하여 찾습니다.

5. code

문제해석

  • stack을 사용해야합니다. 만약 배열이 [1,5,2,3,6,4]라고 할 경우 5,2,3,6에서 5와 3은 6을 넣어야하는데, 그 중간에 있는 2를 6을 넣어줘야하는 지 여부를 stack으로 따져야하기 때문입니다.

python

1
2
3
4
5
6
7
8
9
10
11
12
class Solution:
    def nextGreaterElements(self, nums: List[int]) -> List[int]:
        stack = deque()
        sz = len(nums)
        res = [-1] * sz
        # 2바퀴를 돌기 위해서
        for i in range(sz * 2): 
            while stack and nums[stack[-1]] < nums[i%sz] : 
                res[stack.pop()] = nums[i % sz]
            stack.append(i%sz)
        return res
        

6. 결과 및 후기, 개선점

필요시 c++로 짜드립니다.

설명이 필요하다면 댓글을 달아주세요.

This post is licensed under CC BY 4.0 by the author.