当前位置: 首页 > news >正文

每日一题(两数相加)

每日一题(两数相加)

2. 两数相加 - 力扣(LeetCode)

在这里插入图片描述

思路

思路:

  1. 由于链表从头开始向后存储的是低权值位的数据,所以只需要两个指针p1和p2,分别从链表的头节点开始遍历。同时创建一个新的指针newhead,(用于构造新链表,将创建的新节点进行头插)。并在这个构造的新链表的相应的节点中存储p1和p2对应值的相加结果。

  2. 但是p1和p2所对应的节点的值相加可能会产生进位,所以创建一个pre变量用于存储相应的进位值。(假设p1和p2所指向的节点的值是n1和n2,那么产生的进位值就是:pre = (n1+n2+pre)/10;同时对应新的创建的节点的值就应该是 (pre+n1+n2)%10;。对应代码如下:

        struct ListNode* p1=NULL,   *p2 = NULL, *newhead = NULL,*tail = NULL;int pre = 0;//pre一开始的值必须是0if(!l1)return l2;if(!l2)return l1;p1 = l1;p2 = l2;while(p1&&p2){
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+p2->val+pre)%10;newnode->next = NULL;if(newhead == NULL){//更新pre(进位)pre = (p1->val + p2->val)/10;newhead = tail = newnode;}else{//更新pre(进位)pre = (p1->val + p2->val+pre)/10;tail->next = newnode;tail = tail->next;}p1 = p1->next;p2 = p2->next;}
    
  3. 假如遇到的链表有以下这种长短不一的情况:就需要接着遍历那个较长的链表,将较长的链表中未被遍历的节点的值与pre的值一起参与运算,(因为这俩个链表的相同长度的部分的链表的最后一个节点中存储的值也会存在相加产生进位的情况)。代码实现如下:

    while(p2)//当p2没有走完{
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p2->val+pre)%10;newnode->next = NULL;//更新prepre = (p2->val+pre)/10;p2 = p2->next;tail->next = newnode;tail = tail->next;} while(p1)//当p1没有走完{
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+pre)%10;newnode->next = NULL;//更新prepre = (p1->val+pre)/10;p1 = p1->next;tail->next = newnode;tail = tail->next;}
    

    在这里插入图片描述

  4. 假如链表是如下这几种情况,即便是将两个链表都遍历之后,此时的进位值仍然是1,说明此时的相加计算还没有结束,此时还需要一个节点来存储进位值,所以在将两个链表遍历结束之后,需要对pre的值进行判断,假若pre的值是0,则直接返回newhead即可,pre的值若是1,则还需要创建一个节点。代码如下:

    if(pre){
    struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = pre;newnode->next = NULL;tail->next = newnode;tail = tail->next;}
    

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

代码实现

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){struct ListNode* p1=NULL,   *p2 = NULL, *newhead = NULL,*tail = NULL;int pre = 0;if(!l1)return l2;if(!l2)return l1;p1 = l1;p2 = l2;while(p1&&p2){
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = (p1->val+p2->val+pre)%10;newnode->next = NULL;if(newhead == NULL){//更新pre(进位)pre = (p1->val + p2->val)/10;newhead = tail = newnode;}else{//更新pre(进位)pre = (p1->val + p2->val+pre)/10;tail->next = newnode;tail = tail->next;}p1 = p1->next;p2 = p2->next;}if(pre){
struct ListNode* newnode = (struct ListNode*)malloc(sizeof(struct ListNode));newnode->val = pre;newnode->next = NULL;tail->next = newnode;tail = tail->next;}return newhead;
}

完结

两数相加的链表习题的分析就到这里啦,若有不足,欢迎评论区指正,下期见!

相关文章:

每日一题(两数相加)

每日一题(两数相加) 2. 两数相加 - 力扣(LeetCode) 思路 思路: 由于链表从头开始向后存储的是低权值位的数据,所以只需要两个指针p1和p2,分别从链表的头节点开始遍历。同时创建一个新的指针new…...

恒运资本:沪指震荡涨0.28%,医药板块强势拉升,金融等板块上扬

15日早盘,沪指盘中震荡上扬,科创50指数表现强势;北向资金小幅净流入。 到午间收盘,沪指涨0.28%报3135.31点,深成指、创业板指涨均0.11%,科创50指数涨1.04%;两市合计成交4357亿元,北…...

【计算机网络】Tcp详解

文章目录 前言Tcp协议段格式TCP的可靠性面向字节流应答机制超时重传流量控制滑动窗口(重要)拥塞控制延迟应答捎带应答标志位具体标志位三次握手四次挥手粘包问题TCP异常情况listen的第二个参数 前言 前面我们学习了传输层协议Udp,今天我们一…...

最简单的laravel不使用任何扩展导出csv

php导出csv是非常常用的操作,网上也有灰常多的扩展。如果只是单纯的导出csv数据,完全没有必要去用扩展。现在做项目,都是代码能少就少,扩展能不用就不用。好了,不废话了,开干! 直接搞一个方法&…...

Android studio 断点调试、日志断点

目录 参考文章参考文章1、运行调试2、调试操作3、断点类型行断点的使用场景属性断点的使用场景异常断点的使用场景方法断点的使用场景条件断点日志断点 4、断点管理区 参考文章 参考文章 1、运行调试 开启 Debug 调试模式有两种方式: Debug Run:直接…...

服务器数据恢复-热备盘同步过程中硬盘离线的RAID5数据恢复案例

服务器数据恢复环境: 华为OceanStor某型号存储,11块硬盘组建了一组RAID5阵列,另外1块硬盘作为热备盘使用。基于RAID5阵列的LUN分配给linux系统使用,存放Oracle数据库。 服务器故障: RAID5阵列1块硬盘由于未知原因离线…...

Python 使用input获取用户输入

视频版教程 Python3零基础7天入门实战视频教程 input()函数用于向用户生成一条提示,然后获取用户输入的内容。由于input()函数总会将用户输入的内容放入字符串中,因此用户可以输入任何内容,input()函数总是返回一个字符串。我们可以通过int(…...

Python 可迭代对象、迭代器、生成器

可迭代对象 定义 在Python的任意对象中,只要它定义了可以返回一个迭代器的 __iter__ 魔法方法,或者定义了可以支持下标索引的 __getitem__ 方法,那么它就是一个可迭代对象,通俗的说就是可以通过 for 循环遍历了。Python 原生的列…...

HTML的有序列表、无序列表、自定义列表

目录 背景: 过程: 有序列表: 简介: 代码展示: 效果展示:​ 无序列表: 简介: 代码展示: 效果展示:​ 自定义列表: 简介: 代码展示: 效果展示:​ 总结: 背景: 1.有序列表(Ordered List): 有序列表是最早的…...

银河麒麟安装Docker-国产化-九五小庞

银河麒麟高级服务器操作系统 V10 是针对企业级关键业务,适应虚拟化、 云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和 实时性的需求,依据 CMMI 5 级标准研制的提供内生安全、云原生支持、国产 平台深入优化、高性能、易管理的…...

数据库与身份认证

1. 数据库的基本概念 1.1 什么是数据库 数据库(database)是用来组织、存储和管理数据的仓库。 当今世界是一个充满着数据的互联网世界,充斥着大量的数据。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息…...

LabVIEW开发锅炉汽包水位的监督控制和模拟

LabVIEW开发锅炉汽包水位的监督控制和模拟 控制锅炉汽包液位对于机械的安全和设备的保护至关重要。滚筒液位控制器的工作是将滚筒液位提高到指定的设定点,并保持在那里,同时保持一致的蒸汽负荷。锅炉管可能会因该水平急剧下降而暴露,这会导致…...

2023-简单点-树莓派安装ncnn框架

not python 按照下面的步骤进行就可以了: 参考 tips: 其中有一步要用下面方法: 如果你的git clone不得行,可以按照以下操作方法: git clone --depth1 https://ghproxy.com/ https://github.com/Tencent/ncnn.git python 直接 pip install …...

Docker核心原理与实操

第一章、Docker基本概念 1、概念:Docker是一种容器技术,可以解决软件跨环境迁移问题。 2、实现原理:是一个分层复用的文件系统;每一层都是一个独立的软件; …...

虚幻引擎 UE5 增强输入系统

用人话讲!虚幻引擎 UE5 增强输入系统(蓝图篇)_酥妃大魔王i的博客-CSDN博客 UE5 -- EnhancedInput(增强输入系统) - 知乎 (zhihu.com) 简单认识 虚幻引擎中的增强输入 | 虚幻引擎5.1文档 (unrealengine.com) 文档有较详细介绍 标记一下方便…...

Mac 安装软件各种报错解决方案

Mac 安装软件各种报错解决方案 文章目录 Mac 安装软件各种报错解决方案一. 打开允许“允许任何来源”二. 无法打开"xxx",因为它不是从App Store下载三. 无法打开"xxx",因为 Apple无法检查其是否包含恶意软件。四. "xxx"已…...

leetcode做题笔记142. 环形链表 II

给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整…...

DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?

随着上门按摩、上门养老、上门买菜、上门维修等互联网上门服务的兴起,越来越多的居民开始采用线上下单,享受企业安排人员上门到家的服务。而家庭维修作为到家服务里面典型的一个场景,已成为许多人不可或缺的一部分。然而,与此同时…...

Mybatis常见面试题总结

梳理面试过程中Mybatis相关的常见问题。为保证知识点覆盖,参考了《Mybatis从入门到精通》、《深入浅出Mybatis技术原理与实战》、《Mybatis技术内幕》等书籍。 Mybatis 简介 Mybatis 是一款优秀的持久层框架(ORM框架),它支持自定义SQL、存储过程以及高…...

数字IC设计之时序分析基础概念汇总

1 时钟Clock 理想的时钟模型是一个占空比为50%且周期固定的方波。时钟是FPGA中同步电路逻辑运行的一个基准。理想的时钟信号如下图: 2 时钟抖动Clock Jitter 理想的时钟信号是完美的方波,但是实际的方波是存在一些时钟抖动的。那么什么是时钟抖动呢?时钟抖动&#…...

使用 HashMap 优化嵌套循环:Java 对象数组转换

本文旨在提供使用 HashMap 优化 Java 嵌套循环的有效方法,特别是当循环涉及对象数组并进行相等检查时。通过将内部循环转换为 HashMap 查询可以显著降低时间复杂性,提高代码性能。本文将提供详细的步骤和示例代码,以帮助读者理解和应用此优化…...

百度快速排名优化技术(百度seo排名优化)

百度快速排名优化技术是一种针对搜索引擎结果页面(SERP)排名优化的技术手段,通过优化网站的内容、结构和用户体验等方面,提高网站在搜索引擎中的排名,从而获得更多的流量和潜在客户。下面,我将介绍百度快速…...

易语言实现阶乘与组合数计算

是的,我听说过易语言,它是一款面向中文使用者的编程语言,以其直观的中文语法和图形化界面开发能力而著称。 一、 数学概念解析 在深入编程实现前,我们先明确两个基础的数学概念。 1. 阶乘 阶乘 是所有小于及等于该数的正整数的…...

PHP开发者必看:如何在本地环境快速搭建gRPC和Protobuf开发环境

PHP开发者必看:如何在本地环境快速搭建gRPC和Protobuf开发环境 作为一名长期与PHP打交道的开发者,我深刻理解在微服务架构盛行的当下,掌握gRPC和Protobuf技术栈的重要性。记得第一次尝试在本地搭建环境时,光是版本兼容问题就耗费了…...

云上实战说 | TapNow x Google Cloud 带您体验从灵感到资产的秒级转化

以下文章来源于谷歌云服务,作者 Google Cloud基于 Google Cloud Veo 和 Nano Banana 的前沿能力,TapNow (万物形象所) 邀您体验生成式 AI 如何重塑品牌与自我表达。现场实时生成风格化写真、宠物贴纸及周边,直观感受从灵感到资产的极速转化&a…...

高效音乐资源获取:Soundcloud Music Downloader全功能解析

高效音乐资源获取:Soundcloud Music Downloader全功能解析 【免费下载链接】scdl Soundcloud Music Downloader 项目地址: https://gitcode.com/gh_mirrors/sc/scdl 基于Python的跨平台音乐资源管理方案 一、音乐下载的痛点与解决方案 在数字音乐时代&…...

大模型私有化不是选型,是生存!Python工程师必须在Q3前掌握的5类国产化适配方案,否则明年项目全卡审批

第一章:大模型私有化是Python工程师的生存分水岭当企业开始将大语言模型从公有云API转向本地GPU集群部署,Python工程师的角色正经历一次静默但深刻的重构——不再只是调用requests.post()封装接口,而是要亲手构建模型加载、推理服务、权限控制…...

HunyuanVideo-Foley实战案例:为纪录片自动匹配环境音效的完整工作流

HunyuanVideo-Foley实战案例:为纪录片自动匹配环境音效的完整工作流 1. 项目背景与需求 在纪录片制作过程中,环境音效的采集和匹配往往需要耗费大量时间和人力成本。传统方式需要音效师实地录制或从音效库中手动挑选,整个过程耗时且难以保证…...

用MediaPipe和Python做个隔空切水果游戏:从手势骨架提取到简单游戏逻辑实现

用MediaPipe和Python打造体感切水果游戏:从手势识别到游戏逻辑全解析 还记得小时候在街机厅玩《水果忍者》的畅快感吗?现在,我们完全可以用Python和MediaPipe技术,在电脑前通过手势隔空切水果!本文将带你从零开始&…...

提升嵌入式代码注释质量的工具与技术方案

提升代码注释质量的实用工具与技术方案1. 代码注释工具概述1.1 代码注释的重要性在嵌入式系统开发中,良好的代码注释是保证项目可维护性的关键因素。专业的注释工具能够帮助开发者:创建可视化注释,提升代码可读性生成标准化的文档结构维护代码…...