LeetCode33

news2024/11/22 18:22:23

445.两数相加Ⅱ

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。

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

示例1:

输入:l1 = [7,2,4,3], l2 = [5,6,4]
输出:[7,8,0,7]

示例2:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[8,0,7]

示例3:

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

提示:

  • 链表的长度范围为 [1, 100]
  • 0 <= node.val <= 9
  • 输入数据保证链表代表的数字无前导 0

进阶:如果输入链表不能翻转该如何解决?

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        p, q = l1, l2
        n1, n2 = 0, 0
        while p:
            p = p.next
            n1 += 1
        while q:
            q = q.next
            n2 += 1
        
        l3 = ListNode()
        p, q, j = l1, l2, l3
        while p and q:
            if n1 > n2:
                x = p.val
                y = 0
                n1 -= 1
                p = p.next
            elif n2 > n1:
                x = 0
                y = q.val
                n2 -= 1
                q = q.next
            else:
                x = p.val
                y = q.val
                n1 -= 1
                n2 -= 1
                p = p.next
                q = q.next
            if x + y >= 10:
                node = ListNode(x+y-10)
                j.val += 1
            else:
                node = ListNode(x+y)
            j.next = node
            j = j.next
        
        pre = None
        cur = l3
        while cur:
            nxt = cur.next
            cur.next = pre
            pre = cur
            cur = nxt
        #return pre

        kk = pre
        while kk:
            if kk.val >= 10:
                kk.val -= 10
                if kk.next:
                    kk.next.val += 1
                else:
                    node = ListNode(1)
                    kk.next = node
            kk = kk.next

        pre1 = None
        cur1 = pre
        while cur1:
            nxt1 = cur1.next
            cur1.next = pre1
            pre1 = cur1
            cur1 = nxt1
        
        if pre1.val == 0:
            return pre1.next
        else:
            return pre1
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        pre1 = None
        cur = l1
        while cur:
            nxt = cur.next
            cur.next = pre1
            pre1 = cur
            cur = nxt
        #return pre1

        pre2 = None
        cur = l2
        while cur:
            nxt = cur.next
            cur.next = pre2
            pre2 = cur
            cur = nxt
        #return pre2

        cur = l3 = ListNode()
        carry = 0
        while pre1 or pre2 or carry:
            s = carry + (pre1.val if pre1 else 0) + (pre2.val if pre2 else 0)
            cur.next = ListNode(s % 10)
            carry = s // 10
            cur = cur.next
            if pre1:
                 pre1 = pre1.next
            if pre2:
                 pre2 = pre2.next
        #return l3.next

        pre3 = None
        cur = l3.next
        while cur:
            nxt = cur.next
            cur.next = pre3
            pre3 = cur
            cur = nxt
        return pre3

不翻转链表:把单链表先依次储存到栈里,再依次出栈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2069484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SD Maid SE v1.2.3 — 老牌清理工具全面升级,更简洁,更流畅了

SD Maid&#xff08;SD女佣&#xff09;是一款老牌的安卓垃圾清理神器&#xff0c;支持手机文件概览、文件搜索、应用管理、卸载残留、系统清理、应用清理、重复文件以及存储分析等多种实用功能。近期推出的SD Maid SE采用了全新的架构和技术&#xff0c;全面兼容最新的安卓版本…

如何高效利用ChatGPT撰写论文:从初稿到终稿的全程精华指南

在近年来的人工智能快速发展中&#xff0c;自然语言处理领域尤其显著&#xff0c;其中ChatGPT作为OpenAI推出的先进语言模型&#xff0c;不仅在日常交互上表现出众&#xff0c;其在专业写作方面也展现了巨大潜力。本文将详尽介绍如何高效地利用ChatGPT来撰写和修改学术论文&…

【Linux篇】Linux命令基础

目录 1. Linux的目录结构 1.1 Linux的目录结构 1.2 /在Linux系统中的表示 2. linux命令基础 2.1 什么是命令和命令行 2.2 Linux命令的通用格式 2.3 ls命令 2.3.1 ls命令的参数的作用&#xff1a; 2.3.2 ls命令的选项 2.3.3 命令的选项组合使用 2.4 cd切换工作目录 2…

YOLOv8多种方法改进CBAM注意力机制有效提升检测精度(已跑通)

一、CBAM概念 CBAM&#xff08;Convolutional Block Attention Module&#xff09;是一种用于卷积神经网络&#xff08;CNN&#xff09;的注意力机制&#xff0c;旨在提高网络的表现能力。它通过引入两个注意力模块来增强特征图的表达能力。 二、源码&#xff1a; class Chan…

AI 产品的五种交互模式

我们不是在创造人工智能&#xff0c;我们是在创造智能的控制者 —— James Barrat 历史 回顾计算机交互的演变历程&#xff0c;经历了批处理—命令行式交互—图形界面交互&#xff0c;AI 的出现带来了自然语言交互&#xff0c;基于人类的意图完成输出。 早期的批处理系统古朴…

uefi模式无法读取u盘启动怎么办_uefi模式无法读取u盘启动解决方法

最近有网友问我uefi模式下我按快捷方式或bios中都认别不了U盘&#xff0c;无法正常选择u盘启动进入pe安装系统&#xff0c;出现这种情况一般是bios中设置了uefi模式&#xff0c;而制作的u盘启动不支持uefi启动导致&#xff0c;那么uefi模式无法读取U盘启动怎么办&#xff1f;下…

摄影曝光:曝光模式认知

写在前面 理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好好做事&#xff0c;所以唯一的解决办法就是行动起来&#xff0c;认真做完事情&#xff0c;战胜焦虑&#xff0c;战胜那些心里空荡荡的时刻&#xff0c;而不是选择逃避。不要站在原地…

万亿低空经济赛道,如何抢占先机?

在万亿低空经济赛道中抢占先机&#xff0c;需要企业在多个方面进行全面布局和战略规划。以下是一些关键策略&#xff1a; 一、明确低空经济的定义和潜力 低空经济作为战略性新兴产业和未来产业&#xff0c;已经上升为国家经济工作重点。它是指各类低空航空器在飞行活动中所关…

工商业光伏项目如何顺利运行

工商业光伏项目如何顺利运行 鹧鸪云 工商业光伏可以细分为两大类&#xff0c;一类是针对工业企业的光伏项目&#xff0c;另一类则是针对商业企业的光伏项目。工业企业光伏项目通常是指在工厂、工业园区等工业用地安装光伏系统&#xff0c;利用太阳能发电&#xff0c;以满足工…

Linux(云服)安装go

我的系统环境 一、获取安装包 接下来先在Windows物理机上获取安装包 set http_proxyhttp://127.0.0.1:7897 set https_proxyhttp://127.0.0.1:7897 wget https://go.dev/dl/go1.20.7.linux-amd64.tar.gz然后通过xshell的rz命令将go1.20.7.linux-amd64.tar.gz发送至我的云服&a…

【解压即玩】使命召唤 系列合集17-1,经典收藏

《使命召唤》&#xff08;英语&#xff1a;Call of Duty&#xff09;是一款以第二次世界大战为背景的第一人称射击游戏&#xff0c;该游戏使用了基于雷神之锤III引擎的升级版本&#xff0c;即重返德军总部游戏引擎的改良版。游戏的故事线从不同的角度展开&#xff0c;玩家将扮演…

使用ddns-go实现自动配置IPv6的DDNS

正文共&#xff1a;888 字 17 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面说到通过PPPoE拨号获取到的IPv6地址没有发生变化&#xff08;企业路由器配置IPv6家用宽带的PPPoE拨号示例&#xff09;&#xff0c;结果说完就打脸了。中间家里停了一次电&#xff0c;路由器重新…

大规模泛癌筛选揭示抗癌药物组合的新希望

大规模泛癌筛选揭示抗癌药物组合的新希望 引言 在抗癌治疗中&#xff0c;药物组合因其潜在的增效作用而备受关注。然而&#xff0c;由于可能的组合数量巨大且肿瘤间存在显著的异质性&#xff0c;识别真正有效的药物组合成为一项极具挑战性的任务。近期&#xff0c;一项发表在《…

Open WebUI快速应用ollama模型,实现通过web交互模型,实战llama3

文章目录 前言安装docker安装Open WebUIdocker指令安装docker-compose.yaml安装 访问网站无法选择模型问题处理修改ollama服务配置 重新正常访问页面 前言 基于大模型的应用&#xff0c;通过linux快速实现部署&#xff0c;相应教程可通过传送门快速了解&#xff1a; linux-ubu…

驱动开发系列13 - Linux Graphics 图形驱动概述(二)

目录 一:概述 二:Linux图形驱动演进 3.1 X11基础结构 3.2 DRI/DRM基础结构 四:帧缓冲区驱动程序 4.1 创建帧缓冲器驱动程序 4.2 帧缓冲区操作 五:直接渲染管理器(DRM) 5.1 内核模块(DRM) 5.2 DRM 批量缓冲区提交模型 5.2.1 硬件共享 5.2.2 内存管理和安全 5.3 模式…

搜狐新闻HarmonyOS Push开发实践

本文字数&#xff1a;1795字 预计阅读时间&#xff1a;15分钟 01 背景 搜狐新闻作为HarmonyOS的合作伙伴&#xff0c;于2023年12月成功上架鸿蒙单框架应用市场&#xff0c;成为首批鸿蒙应用矩阵的一员。 推送作为新闻类应用的重要组成部分&#xff0c;我们将其纳入到二期功能开…

【手撕OJ题】——141/142. 环形链表

目录 &#x1f552; 题目 Ⅰ⌛ 方法① - 快慢指针&#x1f552; 面试题&#x1f552; 题目 Ⅱ⌛ 方法① - 快慢指针⌛ 方法② - 转换为链表相交问题 &#x1f552; 题目 Ⅰ &#x1f50e; 141. 环形链表【难度&#xff1a;简单&#x1f7e2;】 给你一个链表的头节点 head &am…

【Electron】桌面应用开发electron-builder打包报错问题处理

Electron 桌面应用开发electron-builder打包过程中各种报错问题处理 前一篇有写过 Electron 桌面应用开发快速入门到打包Windows应用程序 在安装到打包的整个过程中&#xff0c;我们都会遇到很多诡异的问题&#xff0c;接下来我将介绍我遇到的几个问题的解决方案 一、拉包的时…

普元EOS-微前端实现路由

1 前言 EOS微前端已经对路由进行了封装&#xff0c;内置了 $router 对象&#xff0c;直接使用就实现了路由。 2 实现代码 this.$router.push({ path: /a/b }) 由于这些就是普通的路由对象的封装&#xff0c;就不过多描述使用方法。 有兴趣的同学可自行百度了解 vue router对…

CAAC执照:无人机飞手培训就业组装技术很重要

一、CAAC执照概述 CAAC&#xff08;中国民用航空局&#xff09;颁发的无人机执照&#xff0c;全称为《民用无人机操控员执照》&#xff0c;是无人机行业中最权威和含金量最高的证书。考取该执照后&#xff0c;无人机飞手可以合法地申请空域、航线&#xff0c;并从事无人机相关…