题解 | #两个链表生成相加链表#
两个链表生成相加链表
http://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
模拟进位 c
反转链表后再运算会更简单
# class ListNode: # def __init__(self, x): # self.val = x # self.next = None # # # @param head1 ListNode类 # @param head2 ListNode类 # @return ListNode类 # class Solution: def addInList(self , head1 , head2 ): c = 0 head = ListNode(-1) p1 = self.reverse(head1) p2 = self.reverse(head2) p = head while p1 != None and p2 != None: val = (p1.val + p2.val + c)% 10 tmp = ListNode(val) p.next = tmp p = p.next c = int ((p1.val + p2.val + c) /10) p1 = p1.next p2 = p2.next while p1 != None: val = (p1.val + c) % 10 c = int ((p1.val +c)/ 10) tmp = ListNode(val) p.next = tmp p = p.next p1 = p1.next while p2 != None: val = (p2.val + c) % 10 c = int ((p2.val +c) / 10) tmp = ListNode(val) p.next = tmp p = p.next p2 = p2.next if c == 1: tmp = ListNode(1) p.next = tmp p = p.next return self.reverse(head.next) def reverse(self,head): pre = None p = head while p != None: tmp = pre pre = p p = p.next pre.next = tmp return pre