Leetcode/Top 100 Liked

[Linked List][Medium] 2. Add Two Numbers.

자전거통학 2024. 4. 9. 04:24

https://leetcode.com/problems/add-two-numbers/description

 

A. 두개의 단방향 linked list가 주어질때 각 자리수는 숫자의 digit 자리수 값을 의미한다. 

 이때 주어진 두개의 리스트 값을 digit에 맞게 계산하여 다시 리스트로 반환하라.

 

 

Solution. 

 리스트가 단방향이다. 

 뒤집어야 하나, 생각해 봤지만, 그럴 필요 없이, 각 자리수 대로 합해주고 출력한다.

 

더보기
public ListNode AddTwoNumbers(ListNode l1, ListNode l2) 
{
    ListNode prev = null;
    ListNode head = null;
    bool bHasOverflow = false;
    while(l1!=null || l2!=null || bHasOverflow)
    {
        int v1 = l1==null ? 0 : l1.val;
        int v2 = l2==null ? 0 : l2.val;
        int sum = v1 + v2;
        sum = bHasOverflow ? sum + 1 : sum;
        ListNode newNode = new ListNode( sum%10 );
        if(head == null)    head = newNode;
        bHasOverflow = sum >= 10;
        if(prev != null)
            prev.next = newNode;
        prev = newNode;
        l1 = l1!=null ? l1.next : null;
        l2 = l2!=null ? l2.next : null;
    }
    return head;
}

 

적절한 결과.