Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
- int len1 = 0, len2 = 0, carry = 0;
- // Get length of l1 and l2
- ListNode curr = l1;
- while (curr != null) {
- len1++;
- curr = curr.next;
- }
- curr = l2;
- while (curr != null) {
- len2 ++;
- curr = curr.next;
- }
- // Ensure length of l1 > length of l2
- if (len1 < len2) {
- curr = l1;
- l1 = l2;
- l2 = curr;
- int tmp = len1;
- len1 = len2;
- len2 = tmp;
- }
- carry = helper(l1, l2, len1, len2);
- if (carry > 0) {
- return new ListNode(carry, l1);
- }
- return l1;
- }
- int helper(ListNode l1, ListNode l2, int len1, int len2) {
- if (l1 == null) {
- return 0;
- }
- int n1 = l1.val;
- int n2 = l2.val;
- int carry = 0;
- if (len1 > len2) {
- n2 = 0;
- carry = helper(l1.next, l2, len1 - 1, len2);
- } else {
- carry = helper(l1.next, l2.next, len1 - 1, len2);
- }
- l1.val = n1 + n2 + carry;
- carry = l1.val / 10;
- l1.val %= 10;
- return carry;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement