• LeetCode-top100-2. 两数相加-中等


    #################################

    """
    2. 两数相加
    给出两个非空的链表用来表示两个非负的整数。
    其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。
    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
    示例:
    
    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807
    
    """
    
    """
    分析:
    其实就是我们手写加法运算的步骤,
    同位相加,然后大于10就是进一位,
    
    因为最后返回一个链表,所以需要你新建一个链表,这个链表有多个节点,节点类已经在注释里面了,
    因为你要操作链表不同的值,所以你需要一个指针,
    因为你需要解决同位的和,所以你需要一个temp保存这个和,
    因为你需要解决进位的问题,所以你需要对和进行操作,temp%10,余数就是本位,temp//10,取商就是进位
    因为最后你需要保存整个链表,所以把初始化的头元素去掉,
    
    """
    
    
    # Definition for singly-linked list.
    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
            """
            l3h = ListNode(0)  # 头元素
            l3 = l3h  # 指针指向头元素,他们是同一个内存空间,
    
            temp = 0  # 用来保存同位的和
            while l1 or l2 or temp:  # temp处理进位的问题,如果temp有值就是上一位进位得来的,
                if l1:
                    temp += l1.val
                    l1 = l1.next  # 每次循环之后就把链表缩短,到最后就是none
                if l2:
                    temp += l2.val
                    l2 = l2.next
    
                l3.next = ListNode(temp%10)  # 这就是处理完同位和的问题了,
                # 处理完成了之后,需要做两件事,
                # 1是指针后移
                # 2是处理进位的问题,
                l3 = l3.next  # 每次操作
                temp = temp//10
    
            return l3h.next

    ###################################

    ####################################

    ######################################

  • 相关阅读:
    git 常用命令
    spring源码-事件&监听3.6
    spring源码-国际化-3.5
    spring源码-Aware-3.4
    spring源码-BeanPostProcessor-3.3
    springboot中对yaml文件的解析
    数组Array.sort()排序的方法
    【转】js 对象按照键值(不分区大小写)排序,生成签名方法
    【转】JS常用函数整合库 lutils
    VS2017调试出现异常浏览器直接关闭的解决办法
  • 原文地址:https://www.cnblogs.com/andy0816/p/12410174.html
Copyright © 2020-2023  润新知