zoukankan      html  css  js  c++  java
  • Leetcode_02【两数相加】——【难度:中】

    文章目录:

    • 题目
    • 脚本一
    • 脚本逻辑分析

    题目:

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例:

    输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
    输出:7 -> 0 -> 8
    原因:342 + 465 = 807


    脚本一:【耗时80ms】

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
            str1 = ""
            str2 = ""
            first = l1
            second = l2
            while first != None:
                str1 += str(first.val)
                first = first.next
            while second != None:
                str2 += str(second.val)
                second = second.next
            str3 = str1[::-1]
            str4 = str2[::-1]
            n1 = int(str3) + int(str4)
            str5 = str(n1)
            str6 = str5[::-1]
            len1 = len(str6)
            l3 = ListNode(0)
            l3.next = l1
            third = l3
            for i in range(len1):
                bb = ListNode(int(str6[i]))
                third.next = bb
                third = third.next
            l3 = l3.next
            return(l3)

    脚本逻辑分析:

    1. 此题涉及单链表的知识,在此笔者做简单的介绍:单链表的特点是当前节点会记录本节点的值,并指向下一节点,即通过拥有val和next的属性;
    2. 举一个例子:l1 = 2 -> 4 -> 3(不能如此赋值,只是为了演示方便),即l1是一个3节点的单链表;如果l1 = l1.next  那么等同于l1 = 4 -> 3;所以节点的移动和赋值通常由中间变量来进行;如:first=l1,此时first和l1均指向同一个链表,first.val = 5 表示修改当前节点的值为5,此修改会影响l1的链表,因为l1和first均指向同一个链表;first = first.next,此时first =  4 -> 3【此时first的链表也是l1链表的一部分,修改first的值也就是修改l1的值】  
    3. 由题目可知:题目将两加数反转变为链表的形式,脚本的逻辑是先把两加数还原并相加,然后将两数之和字符串化,再通过链表的方式将和中的每个值赋予链表;接着去掉多余的链表头节点即可
  • 相关阅读:
    12、【常见算法】跳台阶问题
    11、【常见算法】编写CString类
    10、【常见算法】单链表逆置输出
    9、【常见算法】数组重排
    8、【常见算法】查找数组中重复元素
    7、【常见算法】数组元素查找
    6、【常见算法】整数拆分
    5、【常见算法】从长度为n的数组(元素互不相同)中任意选择m个数的所有组合。
    vi 常用命令
    Nutz框架的优点
  • 原文地址:https://www.cnblogs.com/mailong/p/12227328.html
Copyright © 2011-2022 走看看