1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int carry = 0; int index_sum = 0; ListNode p = null; ListNode tmp = null; ListNode tmp1 = l1; ListNode tmp2 = l2; int val1,val2; while(tmp1 != null || tmp2 != null) { val1 = tmp1 != null ? tmp1.val : 0; val2 = tmp2 != null ? tmp2.val : 0; index_sum = val1 + val2 + carry; if(index_sum > 9){ index_sum = index_sum - 10; carry = 1; } else { carry = 0; } if(p == null) { tmp = new ListNode(index_sum); p = tmp; } else { tmp.next = new ListNode(index_sum); tmp = tmp.next; } if(tmp1 != null) { tmp1 = tmp1.next; } if(tmp2 != null) { tmp2 = tmp2.next; } } if(carry == 1) { tmp.next = new ListNode(1); } return p; } }
|
操作单链表进行运算,需要注意的是特殊情况的处理:
1、两个链表长度不同,一个链表为空
3、最后一位进位问题,生成的链表长度会是MAX(l1,l2)+1
近期评论