[LeetCode] 436. Find Right Interval

Chobby·2026년 2월 24일

LeetCode

목록 보기
1004/1023

😎풀이

  1. 시작시간이 고유하다는 문제의 전제를 통해 시작 시간과 원래 인덱스를 매핑하여 저장
  2. intervals의 시작 시간을 기준으로 내림차 순으로 정렬(빠른 break를 위함)
  3. 현재 구간과 겹치지 않는 최소 시작의 인덱스를 저장 단, 조건에 맞는 구간이 없는 경우 -1 저장
  4. 저장된 구간별 가장 인접한 구간의 인덱스 반환
function findRightInterval(intervals: number[][]): number[] {
    const originIndex = new Map<number, number>()
    for(let i = 0; i < intervals.length; i++) {
        const startTime = intervals[i][0]
        originIndex.set(startTime, i)
    }
    const sorted = intervals.toSorted((a, b) => b[0] - a[0])
    const rightIntervals = []
    for(const [startI, endI] of intervals) {
        let minIdx = -1
        for(const [startJ, endJ] of sorted) {
            if(startJ < endI) break
            minIdx = originIndex.get(startJ)
        }
        rightIntervals.push(minIdx)
    }
    return rightIntervals
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글