[LeetCode] 503. Next Greater Element II

Chobby·2026년 3월 13일

LeetCode

목록 보기
1033/1042

😎풀이

  1. Stack 자료구조를 사용
  2. nums를 원형으로 이어붙인 형태로 모든 요소 순회
    2-1. 스택에 저장된 인덱스의 요소보다 현재 요소가 큰 경우, 해당 인덱스의 다음 큰 수를 현재 수로 변경
    2-2. 현재 수의 인덱스를 스택에 저장
  3. 다음 큰 수가 저장된 배열 반환, 존재하지 않을 경우 초깃값 -1 반환
function nextGreaterElements(nums: number[]): number[] {
    const n = nums.length
    const result = Array(n).fill(-1)
    const stack = []
    for(let i = 0; i < 2 * n; i++) {
        const cur = nums[i % n]
        while(stack.length && nums[stack.at(-1)] < cur) {
            const idx = stack.pop()
            result[idx] = cur
        }
        if(i < n) {
            stack.push(i)
        }
    }
    return result
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글