From 30d64709ade3e6e805cb4fb3c03333e99b57f9cc Mon Sep 17 00:00:00 2001 From: holmir97 Date: Mon, 12 Apr 2021 21:37:41 +0900 Subject: [PATCH] =?UTF-8?q?[Create]=20LeetCode=5F2=20=EB=91=90=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EB=8D=94=ED=95=98=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AddTwoListNum/AddTwoNum.java | 72 ++++++++++++++++++++++++++++++++++++ AddTwoListNum/ListNode.java | 25 +++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 AddTwoListNum/AddTwoNum.java create mode 100644 AddTwoListNum/ListNode.java diff --git a/AddTwoListNum/AddTwoNum.java b/AddTwoListNum/AddTwoNum.java new file mode 100644 index 0000000..35aa03a --- /dev/null +++ b/AddTwoListNum/AddTwoNum.java @@ -0,0 +1,72 @@ +// LeetCode_2 +// 2020.04.12 +// List, case work +// Medium + +public class AddTwoNum { + public static void main(String[] args) { + new ListNode().printListNode(new AddTwoNum().addTwoNumbers( + new ListNode(2, new ListNode(4, new ListNode(3))), + new ListNode(5, new ListNode(6, new ListNode(4))))); + } + + public ListNode addTwoNumbers(ListNode l1, ListNode l2) throws NumberFormatException{ + long num1 = 0, num2 = 0; + ListNode listNode = new ListNode(); + ListNode head = listNode; + + while (l1 != null) { + num1 += l1.val; + if (l1.next != null) + num1 *= 10; + l1 = l1.next; + } + while (l2 != null) { + num2 += l2.val; + if (l2.next != null) + num2 *= 10; + l2 = l2.next; + } + StringBuffer str1 = new StringBuffer(String.valueOf(num1)); + StringBuffer str2 = new StringBuffer(String.valueOf(num2)); + str1.reverse(); + str2.reverse(); + num1 = Long.valueOf(String.valueOf(str1)); + num2 = Long.valueOf(String.valueOf(str2)); + num1 += num2; + + + while (num1 != 0) { + listNode.val = num1 % 10; + num1 /= 10; + if (num1 == 0) + break; + listNode.next = new ListNode(); + listNode = listNode.next; + } + + return head; + } +} + +// Best Solution-O(max(n,m))_출처 leetcode +// +// public ListNode addTwoNumbers(ListNode l1, ListNode l2) { +// ListNode dummyHead = new ListNode(0); +// ListNode p = l1, q = l2, curr = dummyHead; +// int carry = 0; +// while (p != null || q != null) { +// int x = (p != null) ? p.val : 0; +// int y = (q != null) ? q.val : 0; +// int sum = carry + x + y; +// carry = sum / 10; +// curr.next = new ListNode(sum % 10); +// curr = curr.next; +// if (p != null) p = p.next; +// if (q != null) q = q.next; +// } +// if (carry > 0) { +// curr.next = new ListNode(carry); +// } +// return dummyHead.next; +// } diff --git a/AddTwoListNum/ListNode.java b/AddTwoListNum/ListNode.java new file mode 100644 index 0000000..5605332 --- /dev/null +++ b/AddTwoListNum/ListNode.java @@ -0,0 +1,25 @@ +import javax.swing.*; + +public class ListNode { + long val; + ListNode next; + + ListNode() { + } + + ListNode(int val) { + this.val = val; + } + + ListNode(int val, ListNode next) { + this.val = val; + this.next = next; + } + + public void printListNode(ListNode listNode){ + while(listNode != null){ + System.out.print(listNode.val+ " "); + listNode = listNode.next; + } + } +} \ No newline at end of file