본문 바로가기

알고리즘

letCode - Add Two Numbers

import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class algo {
    public static void main(String[] args) {
        ListNode listNode11 = new ListNode();
        ListNode listNode21 = new ListNode();
        ListNode listNode31 = new ListNode();
        listNode11.val = 2;
        listNode21.val = 4;
        listNode31.val = 3;

        listNode11.next = listNode21;
        listNode21.next = listNode31;

        ListNode listNode12 = new ListNode();
        ListNode listNode22 = new ListNode();
        ListNode listNode32 = new ListNode();
        listNode12.val = 5;
        listNode22.val = 6;
        listNode32.val = 4;

        listNode12.next = listNode22;
        listNode22.next = listNode32;

        addTwoNumbers(listNode11, listNode12);
    }

    public static class ListNode {
        int val;
        ListNode next;
        ListNode() {}
        ListNode(int val) { this.val = val; }
        ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    }

    public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode listNode = new ListNode();
        ListNode resultNode = new ListNode();

        int carry = 0;
        ListNode curNode = resultNode;
        while (l1 != null || l2 != null) {
            int x = (l1 != null) ? l1.val : 0;
            int y = (l2 != null) ? l2.val : 0;

            int curVal = x + y + carry;
            carry = curVal / 10;

            ListNode nextNode = new ListNode();
            nextNode.val = curVal / 10;
            curNode.next = nextNode;
            curNode = nextNode;

            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;
        }

        if (carry > 0) {
            curNode.next = new ListNode(carry);
        }

        return resultNode.next;
    }
}

'알고리즘' 카테고리의 다른 글

letCode - Roman to Integer  (0) 2022.02.05
letCode - Longest Palindromic Substring ( 1차 )  (0) 2022.02.04
leetCode - twoSum  (0) 2022.02.03
프로그래머스 모의고사  (0) 2022.02.01
프로그래머스 더 맵게  (0) 2022.01.31