鱼C论坛

 找回密码
 立即注册
查看: 1403|回复: 4

[已解决]力扣两数相加

[复制链接]
发表于 2021-11-14 18:56:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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


class Solution(object):
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        a = [str(i) for i in l1]
        a.reverse()
        b = [str(j) for j in l2]
        b.reverse()
        i = int(float(",".join(a)))
        j = int(float(",".join(b)))
        k = i + j
        for n in k:
            n = int(n)
            print(n,end=" ")

l1 = [2,4,3]
l2 = [5,6,4]
c = Solution()
print(c.addTwoNumbers(l1,l2))
最佳答案
2021-11-20 00:25:46
水平比较渣,python3代码。
ps:感觉大学C语言没少做这种题~~
class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        result=l1 #保存链表头部
        while(l1.next and l2.next): #循环相加,结果存入原l1链表中
            l1.val+=l2.val
            l1=l1.next
            l2=l2.next
        l1.val+=l2.val #其中一个链表到尾部,先处理当前节点值
        if not l1.next: #如果l1到头,把l2后续节点挂过来
            l1.next=l2.next
        #从头处理l1链表的进位问题
        cur=result  
        while(cur.next):
            cur.next.val=cur.next.val+cur.val//10
            cur.val=cur.val%10
            cur=cur.next

        #尾节点进位处理
        if cur.val>9: 
            cur.val=cur.val%10
            cur.next=ListNode(1)
        return result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-14 19:42:45 | 显示全部楼层
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        arr = dict()
        for i, num in enumerate(nums):
            if target - num in arr:
                return [arr[target - num], i]
            arr[nums[i]] = i
        return []
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-14 21:47:33 | 显示全部楼层

大佬,您的是两数之和吧,我想问问两数相加的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-14 21:48:15 | 显示全部楼层
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

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

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

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-two-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-20 00:25:46 | 显示全部楼层    本楼为最佳答案   
水平比较渣,python3代码。
ps:感觉大学C语言没少做这种题~~
class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        result=l1 #保存链表头部
        while(l1.next and l2.next): #循环相加,结果存入原l1链表中
            l1.val+=l2.val
            l1=l1.next
            l2=l2.next
        l1.val+=l2.val #其中一个链表到尾部,先处理当前节点值
        if not l1.next: #如果l1到头,把l2后续节点挂过来
            l1.next=l2.next
        #从头处理l1链表的进位问题
        cur=result  
        while(cur.next):
            cur.next.val=cur.next.val+cur.val//10
            cur.val=cur.val%10
            cur=cur.next

        #尾节点进位处理
        if cur.val>9: 
            cur.val=cur.val%10
            cur.next=ListNode(1)
        return result
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 09:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表