[leetcode每日一题1]两数之和(中等题)

[leetcode每日一题1]两数之和(中等题)

题目

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

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

在这里插入图片描述
在这里插入图片描述

思路

1.链表转为List
2.List还原数字
3.两数求和
4.和转为链表

难点

熟悉链表结构

我的答案

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        c1 = 0 #l1和
        c2 = 0 #l2和
        list1 = [] #l1数字
        list2 = [] #l2数字
        l3 = ListNode()
        #链表转List
        while(1):
            list1.append(l1.val)
            if l1.next == None:
                break
            else:
                l1 = l1.next
        while(1):
            list2.append(l2.val)
            if l2.next == None:
                break
            else:
                l2 = l2.next
        #两数求和
        p = 1
        for i in list1:
            c1 += i * p
            p = p * 10 
        q = 1
        for j in list2:
            c2 += j * q
            q = q * 10 
        c = c1 + c2
        #和转链表
        list3 = []
        r = 10
        if c == 0:
            l3.val = 0
            l3.next = None
            return l3
        else:
            while(c != 0):
                v = c % r 
                list3.append(v/(r/10))
                c = c - v
                r = r * 10
        tale = ListNode()
        for i,x in enumerate(list3):
            if i==0:
                l3.val = x
                l3.next = None
                tale = l3
            else:
                lnew = ListNode()
                lnew.val = x
                tale.next = lnew
                tale = lnew
        return l3

提交结果

击败5%,就挺拉的。
但是咱通过就是好样滴~
在这里插入图片描述
散会~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值