LeetCode 2. Add Two Numbers
解法1:
注意: l1和l2的长度可能不同,并且得到的数有可能为0。
提示:一个数字在链表中的位置 = 此数字在这个数中的位置
3->2->1 是123。
1是第三位,及百位。
2是第二位,即十位。
3是第一位,即个位。
123 = 3(10^0) + 2(10^1) + 1*(10^2)
# 单链表的定义
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def addTwoNumbers(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
# 指向现在所读的链表的位置
l1_current = l1
l2_current = l2
# 存储两个数的和
result = 0
# 存储l1和l2链表所代表的数
l1_number = 0
l2_number = 0
# i 存储现在是第几位
i = 0
# 通过循环来得出l1和l2链表所存的数
while l1_current != None:
l1_number = l1_number + l1_current.val*pow(10,i)
l1_current = l1_current.next
i+=1
# 初始化i,l1和l2分开计算是因为他们两个的长度可能不同
i = 0
while l2_current != None:
l2_number = l2_number + l2_current.val*pow(10,i)
l2_current = l2_current.next
i+=1
# 进行运算
result = l1_number + l2_number
# 将计算结果存储在链表中
# 在进行循环之前进存储第一位是因为:
# 1. 要保存这个链表的head
# 2, 避免算出的结果为0,但输出是空的情况
result_list = ListNode(result%10)
result_list_current = result_list
result = result/10
while result != 0:
result_list_current.next = ListNode(result%10)
result_list_current = result_list_current.next
result = result/10
return result_list
Note:
-
pow(10,i) :
计算10的i次方的结果
原帖
网友评论