My answer:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { if (l1 == null) { return l2; } else if (l2 == null) { return l1; } int addOne = (l1.val + l2.val) / 10; int newVal = (l1.val + l2.val) % 10; ListNode root = new ListNode(newVal); l1 = l1.next; l2 = l2.next; ListNode currentNode = root; while (l1 != null && l2 != null) { newVal = (l1.val + l2.val + addOne) % 10; addOne = (l1.val + l2.val + addOne) / 10; ListNode newNode = new ListNode(newVal); currentNode.next = newNode; currentNode = currentNode.next; l1 = l1.next; l2 = l2.next; } ListNode remainNode = l1 == null? l2 : l1; while (addOne != 0) { int currentVal = 0; if (remainNode != null) { currentVal = remainNode.val; } newVal = (currentVal + addOne) % 10; addOne = (currentVal + addOne) / 10; ListNode newNode = new ListNode(newVal); currentNode.next = newNode; currentNode = currentNode.next; remainNode = remainNode != null? remainNode.next : null; } if (remainNode != null) { currentNode.next = remainNode; } return root; } }
No comments:
Post a Comment