美文网首页
Add Two numbers-Leetcode Day 2

Add Two numbers-Leetcode Day 2

作者: 码力平平菜鸡熊 | 来源:发表于2019-01-22 22:48 被阅读0次

    1. 问题描述

    给定两个非空的链表,两个链表代表着不同的数字,整数的每一位在链表中逆序排列。
    例如:
    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807.

    2. 解答

    2.1 自己的答案

    2.1.1 思路

    最原始的思路,模拟,首先将两个链表所表示的数字转换为int类型,最后相加后,将数字转换为字符串,字符串逆序,最后将逆序后的字符串构造成链表结构即可,最后,返回链表的头节点。

    2.1.2 代码

    # Definition for singly-linked list.
    class ListNode:
         def __init__(self, x):
             self.val = x
             self.next = None
    
    class Solution:
        def addTwoNumbers(self, l1, l2):
            """
            :type l1: ListNode
            :type l2: ListNode
            :rtype: ListNode
            """
            num1 = 0
            num2 = 0
            counter = 0
            while l1 != None :
                num1 = num1 + l1.val*pow(10, counter)
                l1 = l1.next
                counter = counter + 1
            counter = 0
            while l2 != None:
                num2 = num2 + l2.val*pow(10, counter)
                l2 = l2.next
                counter = counter + 1
            result = num1 + num2
            result = str(result)
            output_str =  result[::-1]
            l3 = ListNode(output_str[0])
            output_str = output_str[1:]
            l3_header = l3 #l3_header保存返回链表的头节点。
            for item in output_str:
                l3.next = ListNode(int(item))
                l3 = l3.next
            return l3_header
    
    so = Solution()
    #构造l1, l2 的测试输入 int(l1) =243, int(l2) = 564
    l1 = ListNode(2)
    l1.next = ListNode(4)
    l1.next.next = ListNode(3)
    l2 = ListNode(5)
    l2.next = ListNode(6)
    l2.next.next = ListNode(4)
    
    out = so.addTwoNumbers(l1=l1, l2=l2)
    while out != None :
        print(out.val)
        if out.next != None:
            print("->")
        out = out.next
    

    2.1.3 感悟

    链表结构的原理是相通的,与C语言不同的是,由于没有指针,可能相对删除和添加的灵活性就会差一点。有时间会使用python构造一遍常用的数据结构。(Flag*1)。

    相关文章

      网友评论

          本文标题:Add Two numbers-Leetcode Day 2

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