[LeetCode] 725. Split Linked List in Parts

Chobby·2026년 7월 22일

LeetCode

목록 보기
1115/1126

😎풀이

  1. head를 통해 ListNode 길이 측정
  2. 몫과 나머지를 통해 한 파트당 몇 개의 노드를 할당할지 결정
  3. 각 파트에 N개의 노드 할당
  4. 할당된 각 파트의 노드를 담은 배열 반환
function splitListToParts(head: ListNode | null, k: number): Array<ListNode | null> {
    const parts = Array.from({ length: k }, () => null)
    
    let len = 0
    let mock = head
    while (mock) {
        len++
        mock = mock.next
    }
    
    const quotient = Math.floor(len / k)
    let remain = len % k
    
    let curr = head
    
    for (let i = 0; i < k; i++) {
        if (!curr) break
        
        parts[i] = curr
        
        const partSize = quotient + (remain > 0 ? 1 : 0)
        if (remain > 0) remain--
        
        for (let j = 0; j < partSize - 1; j++) {
            if (curr) curr = curr.next
        }
        
        if (curr) {
            const nextNode = curr.next
            curr.next = null
            curr = nextNode
        }
    }
    
    return parts;
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글