숫자 두 개 더하기 - Daily JS(22일차)

문제 설명
두 개의 음수가 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록이 제공됩니다. 숫자는 역순으로 저장되며 각 노드에는 단일 숫자가 포함됩니다. 두 숫자를 더하고 합계를 연결 리스트로 반환합니다.

숫자 0 자체를 제외하고 두 숫자에 선행 0이 포함되어 있지 않다고 가정할 수 있습니다.


예 1:


Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.


예 2:

Input: l1 = [0], l2 = [0]
Output: [0]


예 3:

Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]


제약:
  • 각 연결 리스트의 노드 수는 [1, 100] 범위입니다.
  • 0 <= Node.val <= 9
  • 목록이 선행 0이 없는 숫자를 나타내는 것이 보장됩니다.

  • 해결책

    /**
     * Definition for singly-linked list.
     * function ListNode(val, next) {
     *     this.val = (val===undefined ? 0 : val)
     *     this.next = (next===undefined ? null : next)
     * }
     */
    /**
     * @param {ListNode} l1
     * @param {ListNode} l2
     * @return {ListNode}
     */
    var addTwoNumbers = function(l1, l2) {
        if (l1 == null && l2 == null) return 0;
        let dummie = new ListNode();
        let node = dummie;
        let carrier = false;
        while (l1 || l2 || carrier) {
            let new_value = 0;
            // sum nodes if availible
            if (l1) [new_value, l1] = [new_value + l1.val, l1.next];
            if (l2) [new_value, l2] = [new_value + l2.val, l2.next];
            // take care of the carrier
            if (carrier) [new_value, carrier] = [new_value + 1, false];
            if (new_value >= 10) carrier = true;
            // append new node
            node.next = new ListNode(new_value % 10);
            node = node.next;
        }
        return dummie.next;
    };
    


    LeetCode 문제:
    https://leetcode.com/problems/add-two-numbers/

    시리즈를 즐기고 계시기를 바랍니다. 그렇다면 ❤️ 및 를 누르는 것을 잊지 마세요. 나중에 사용할 수 있도록 북마크할 수도 있습니다. 질문이나 제안 사항이 있으면 주저하지 말고 삭제하십시오.
    감사합니다 다음 포스팅에서 뵙겠습니다.

    좋은 웹페이지 즐겨찾기