2. 两数相加
两个数以单链表的形式(逆序)给出,求两个数相加的结果。
解:题目已经给出逆序形式,即最低位是个位,因此可以按照数学的手动计算方法,从个位开始,逐位相加,有进位产生则进位。需要注意的是,如果循环结束后还有进位,需要将最后的进位添加到新的节点中。
{ ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head , tail ; carry ; (l1 l2 ) { n1 l1 l1.val : ; n2 l2 l2.val : ; sum n1 n2 carry; (head ) { head tail ListNode(sum ); } { tail.next ListNode(sum ); tail tail.next; } carry sum ; (l1 ) { l1 l1.next; } (l2 ) { l2 l2.next; } } (carry ) { tail.next ListNode(carry); } head; } }