Dev study and notes

리트코드 0002 두 수 더하기 LEETCODE 2. Add Two Numbers 본문

LEETCODE

리트코드 0002 두 수 더하기 LEETCODE 2. Add Two Numbers

devlunch4 2024. 12. 3. 17:58
반응형

2. 두 수 더하기

2. Add Two Numbers

Difficulty Topics Hints URL
Medium Linked_List Math Recursion 0 https://leetcode.com/problems/add-two-numbers/description/

Table of Contents

설명

두 개의 비어 있지 않은 연결 리스트가 주어지며, 이는 두 개의 음이 아닌 정수를 나타냅니다.
숫자는 역순으로 저장되어 있으며, 각 노드는 한 자리 숫자를 포함하고 있습니다.
두 숫자를 더한 결과를 연결 리스트로 반환하세요.

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

예제

예제 1:

입력: l1 = [2,4,3], l2 = [5,6,4]
출력: [7,0,8]
설명: 342 + 465 = 807.

예제 2:

입력: l1 = [0], l2 = [0]
출력: [0]

예제 3:

입력: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
출력: [8,9,9,9,0,0,0,1]

제약:

  • 각 연결 리스트의 노드 개수는 [1, 100] 범위에 속합니다.
  • 0 <= Node.val <= 9
  • 리스트는 선행 0이 없는 숫자를 나타냅니다.

Solutions

JAVA

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode node = new ListNode(0);
        ListNode result = node;
        int carry = 0;

        while (l1 != null || l2 != null) {
            int sum = carry;

            if (l1 != null) {
                sum += l1.val;
                l1 = l1.next;
            }

            if (l2 != null) {
                sum += l2.val;
                l2 = l2.next;
            }

            if (sum >= 10) {
                node.next = new ListNode(sum - 10);
                carry = 1;
            } else {
                node.next = new ListNode(sum);
                carry = 0;
            }
            node = node.next;
        }

        if (carry == 1) {
            node.next = new ListNode(1); 
        }
        return result.next;
    }    
}
반응형
Comments