LeetCode 2. Add Two Numbers

2018-11-08  本文已影响0人  早睡早起吃嘛嘛香

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:

  1. pow(10,i) :
    计算10的i次方的结果

    原帖
上一篇下一篇

猜你喜欢

热点阅读