需要注意的地方
- 在自己测试的时候,需要自己完成数据结构ListNode的实现
- 两组ListNode的长度可能不一样,所以需要在短的后面补0
- 在返回时不一定需要返回保存的结果的根结点,所以初始化可以用0初始化
- 最后一位可能还存在进位,因此在跳出循环后再进行处理
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def create_ListNode(head):
root = ListNode(head[0])
p =root
for i in range(1,len(head)):
node = ListNode(head[i])
p.next = node
p = node
return root
def print_ListNode(head):
p = head
val = []
while p:
val.append(p.val)
p = p.next
return val
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
p1 = l1
p2 = l2
result_root = ListNode()
temp = 0
result_p = result_root
while p1 or p2:
result_p.next = ListNode((p1.val + p2.val +temp)%10)
result_p = result_p.next
temp = (p1.val + p2.val +temp)//10
if not(p1.next or p2.next):
break
if p1.next:
p1 = p1.next
else:
p1 = ListNode(0)
if p2.next:
p2 = p2.next
else:
p2 = ListNode(0)
if temp>0:
result_p.next = ListNode(temp)
return result_root.next
if __name__=='__main__':
head_1 = [2,4,3]
head_2 = [5,6,4]
l1 = create_ListNode(head_1)
l2 = create_ListNode(head_2)
# print(print_ListNode(l1))
result = Solution().addTwoNumbers(l1, l2)
print(print_ListNode(result))