美文网首页
LeetCode 2. Add Two Numbers

LeetCode 2. Add Two Numbers

作者: 早睡早起吃嘛嘛香 | 来源:发表于2018-11-08 03:46 被阅读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次方的结果

      原帖

    相关文章

      网友评论

          本文标题:LeetCode 2. Add Two Numbers

          本文链接:https://www.haomeiwen.com/subject/uskixqtx.html