[LeetCode] 86. Partition List

Chobby·2024년 12월 15일
1

LeetCode

목록 보기
121/194

😎풀이

주석을 남겨 문제를 풀이하였음

Class의 성질을 정확히 파악하느냐 못하냐를 구분할 수 있는 문제임

lessTail의 next 값으로 greaterDummy.next를 주는 부분이 핵심

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */

function partition(head: ListNode | null, x: number): ListNode | null {
    // x보다 작은 값이 모일 List
    let lessDummy = new ListNode(0)
    // x보다 큰 값이 모일 List
    let greaterDummy = new ListNode(0)

    // Dummy에 값을 채우며 진행될 꼬릿값
    let lessTail = lessDummy
    let greaterTail = greaterDummy

    // 현재 List
    let current = head

    // head를 순회
    while(current) {
        // 각 List 조건에 맞게 할
        if(current.val < x) {
            lessTail.next = current
            lessTail = lessTail.next
        } else {
            greaterTail.next = current
            greaterTail = greaterTail.next
        }
        current = current.next
    }

    // lessTail의 다음 값으로 greaterTail의 처음 값(greaterDummy.next)을 이어줌
    lessTail.next = greaterDummy.next
    greaterTail.next = null

    return lessDummy.next
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글