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

重生之算法刷题之路之链表初探(三)

算法刷题之路之链表初探(三)

今天来学习的算法题是leecode2链表相加,是一道简单的入门题,但是原子在做的时候其实是有些抓耳挠腮,看了官解之后才恍然大悟!

条件

在这里插入图片描述

项目解释

有题目可以知道,我们需要进行的其实是一个数学(十进制计算)问题,当一个链表的数加另一个的链表的数时需要满10进1,知道这个重点其余的问题就迎刃而解啦!

代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head = null, tail = null;int carry = 0;while (l1 != null || l2 != null) {int n1 = l1 != null ? l1.val : 0;int n2 = l2 != null ? l2.val : 0;int sum = n1 + n2 + carry;if (head == null) {head = tail = new ListNode(sum % 10);} else {tail.next = new ListNode(sum % 10);tail = tail.next;}carry = sum / 10;if (l1 != null) {l1 = l1.next;}if (l2 != null) {l2 = l2.next;}}if (carry > 0) {tail.next = new ListNode(carry);}return head;}
}
代码解释

当给定的两个链表分别为 l1 和 l2,其表示的非负整数分别为 235 和 572 时,代码的执行过程如下:

初始化:

head 和 tail 初始化为 null,用来构建结果链表。 carry 初始化为 0,用来记录进位。 循环开始:

进入 while 循环,条件为 l1 != null || l2 != null,只要其中一个链表还有节点,就继续循环。 每一轮循环:

计算当前节点的值: 如果 l1 不为 null,则取 l1.val,否则取 0。 如果 l2 不为 null,则取 l2.val,否则取
0。 将上一轮的进位 carry 加上 n1、n2 得到 sum。 更新进位值 carry 为 sum / 10,即 sum 的十位数。
构建新节点:

如果 head 为 null,说明结果链表还没有节点,此时创建新节点 new ListNode(sum % 10),并将 head 和
tail 都指向这个节点。 否则,在 tail.next 处创建新节点 new ListNode(sum % 10),并更新 tail
为新创建的节点。 移动指针:

如果 l1 不为 null,将 l1 指向下一个节点。 如果 l2 不为 null,将 l2 指向下一个节点。 循环结束:

循环会重复以上步骤,直到 l1 和 l2 同时为 null。 处理最后的进位:

如果循环结束后,carry 大于 0,说明还有进位需要处理,此时在 tail.next 处创建一个新节点,节点的值为 carry。
返回结果:

返回 head,即为最终构建的结果链表的头部。 具体执行过程如下:

初始时 l1 = 235,l2 = 572,carry = 0。 第一轮循环:计算 n1 = 5,n2 = 2,sum = 5 + 2 +
0 = 7,创建节点 7,更新 head 和 tail。 第二轮循环:计算 n1 = 3,n2 = 7,sum = 3 + 7 + 0 =
10,创建节点 0,更新 tail。 第三轮循环:计算 n1 = 2,n2 = 5,sum = 2 + 5 + 1 = 8,创建节点
8,更新 tail。 第四轮循环:l1 和 l2 同时为 null,循环结束。 检查最后的进位 carry = 0,无需额外节点。
因此,最终返回的结果链表为 708。

相关文章:

重生之算法刷题之路之链表初探(三)

算法刷题之路之链表初探(三) 今天来学习的算法题是leecode2链表相加,是一道简单的入门题,但是原子在做的时候其实是有些抓耳挠腮,看了官解之后才恍然大悟! 条件 项目解释 有题目可以知道,我们需…...

哪吒汽车,正在等待“太乙真人”的拯救

文丨刘俊宏 在360创始人、哪吒汽车股东周鸿祎近日连续且着急的“督战”中,哪吒汽车(下简称哪吒)终究还是顶不住了。 6月26日,哪吒通过母公司合众新能源在港交所提交了IPO文件,急迫地希望成为第五家登陆港股的造车新势力…...

HDC Cloud 2024 | CodeArts加速软件智能化开发,携手HarmonyOS重塑企业应用创新体验

2024年6月21~23日,华为开发者大会HDC 2024在东莞溪流背坡村隆重举行。期间华为云主办了以“CodeArts加速软件智能化开发,携手HarmonyOS重塑企业应用创新体验”为主题的分论坛。论坛汇聚了各行各业的专家学者、技术领袖和开发者,共同探讨Harmo…...

基于隐马尔可夫模型的股票预测【HMM】

基于机器学习方法的股票预测系列文章目录 一、基于强化学习DQN的股票预测【股票交易】 二、基于CNN的股票预测方法【卷积神经网络】 三、基于隐马尔可夫模型的股票预测【HMM】 文章目录 基于机器学习方法的股票预测系列文章目录一、HMM模型简介(1)前向后…...

PostgreSQL Replication Slots

一、PostgreSQL的网络测试 安装PostgreSQL客户端 sudo yum install postgresql 进行网络测试主要是验证客户端是否能够连接到远程的PostgreSQL服务器。以下是使用psql命令进行网络测试的基本步骤: 连接到数据库: 使用psql命令连接到远程的PostgreSQL数据库服务器…...

centos7搭建zookeeper 集群 1主2从

centos7搭建zookeeper 集群 准备前提规划防火墙开始搭建集群192.168.83.144上传安装包添加环境变量修改zookeeper 的配置 192.168.83.145 和 192.168.83.146 配置 启动 集群 准备 vm 虚拟机centos7系统zookeeper 安装包FinalShell或者其他shell工具 前提 虚拟机安装好3台cen…...

Arrays.asList 和 java.util.ArrayList 区别

理解 Java 中的 Arrays.asList 和 java.util.ArrayList 的区别 在 Java 编程中,Arrays.asList 方法和 java.util.ArrayList 是两种常用的处理列表数据的方式。虽然它们在功能上看起来相似,但在内部实现和使用上有着本质的不同。本文将探讨这两种方式的区…...

代码随想录-Day44

322. 零钱兑换 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数…...

CriticGPT: 用 GPT-4 找出 GPT-4 的错误

CriticGPT 是 OpenAI 发布的一个基于 GPT-4 的模型,它可以帮助我们人类 Review 并纠正 ChatGPT 在生成代码时的错误。使用 CriticGPT 审查代码时,有 60% 的概率生成的代码更好更正确。...

SpringBoot:SpringBoot中调用失败如何重试

一、引言 在实际的应用中,我们经常需要调用第三方API来获取数据或执行某些操作。然而,由于网络不稳定、第三方服务异常等原因,API调用可能会失败。为了提高系统的稳定性和可靠性,我们通常会考虑实现重试机制。 Spring Retry为Spri…...

2024-06-24 问AI: 在大语言模型中,什么是ray?

文心一言 在大语言模型中,Ray是一个开源的统一框架,用于扩展AI和Python应用程序,特别是在机器学习领域。以下是关于Ray的详细解释: 核心功能: Ray为并行处理提供了计算层,使得用户无需成为分布式系统专家…...

仓库管理系统09--修改用户密码

1、添加窗体 2、窗体布局控件 UI设计这块还是传统的表格布局&#xff0c;采用5行2列 3、创建viewmodel 4、前台UI绑定viewmodel 这里要注意属性绑定和命令绑定及命令绑定时传递的参数 <Window x:Class"West.StoreMgr.Windows.EditPasswordWindow"xmlns"http…...

在Spring Data JPA中使用@Query注解

目录 前言示例简单示例只查询部分字段&#xff0c;映射到一个实体类中只查询部分字段时&#xff0c;也可以使用List<Object[]>接收返回值再复杂一些 前言 在以往写过几篇spring data jpa相关的文章&#xff0c;分别是 Spring Data JPA 使用JpaSpecificationExecutor实现…...

【UE5.1】Chaos物理系统基础——01 创建可被破坏的物体

目录 步骤 一、通过笔刷创建静态网格体 二、破裂静态网格体 三、“统一” 多层级破裂 四、“簇” 群集化的破裂 五、几何体集的材质 六、防止几何体集自动破碎 步骤 一、通过笔刷创建静态网格体 1. 可以在Quixel Bridge中下载两个纹理&#xff0c;用于表示石块的内外纹…...

Linux下SUID提权学习 - 从原理到使用

目录 1. 文件权限介绍1.1 suid权限1.2 sgid权限1.3 sticky权限 2. SUID权限3. 设置SUID权限4. SUID提权原理5. SUID提权步骤6. 常用指令的提权方法6.1 nmap6.2 find6.3 vim6.4 bash6.5 less6.6 more6.7 其他命令的提权方法 1. 文件权限介绍 linux的文件有普通权限和特殊权限&a…...

Redis主从复制搭建一主多从

1、创建/myredis文件夹 2、复制redis.conf配置文件到新建的文件夹中 3、配置一主两从&#xff0c;创建三个配置文件 ----redis6379.conf ----redis6380.conf ----redis6381.conf 4、在三个配置文件写入内容 redis6379.conf里面的内容 include /myredis/redis.conf pidfile /va…...

GPT-4o文科成绩超一本线,理科为何表现不佳?

目录 01 评测榜单 02 实际效果 什么&#xff1f;许多大模型的文科成绩竟然超过了一本线&#xff0c;还是在竞争激烈的河南省&#xff1f; 没错&#xff0c;最近有一项大模型“高考大摸底”评测引起了广泛关注。 河南高考文科今年的一本线是521分&#xff0c;根据这项评测&…...

Lombok的hashCode方法

Lombok对于重写hashCode的算法真的是很经典&#xff0c;但是目前而言有一个令人难以注意到的细节。在继承关系中&#xff0c;父类的hashCode针对父类的所有属性进行运算&#xff0c;而子类的hashCode却只是针对子类才有的属性进行运算&#xff0c;立此贴提醒自己。 目前重写ha…...

关于springboot创建kafkaTopic

工具类提供&#xff0c;方法名见名知意。使用kafka admin import org.apache.kafka.clients.admin.*; import org.apache.kafka.common.KafkaFuture;import java.util.*; import java.util.concurrent.ExecutionException;import org.apache.kafka.clients.admin.AdminClient; …...

OOAD的概念

面向对象分析与设计&#xff08;OOAD, Object-Oriented Analysis and Design&#xff09;是一种软件开发方法&#xff0c;它利用面向对象的概念和技术来分析和设计软件系统。OOAD 主要关注对象、类以及它们之间的关系&#xff0c;通过抽象、封装、继承和多态等面向对象的基本原…...

Windows 10系统瘦身实战:用Win10BloatRemover打造高效纯净系统

Windows 10系统瘦身实战&#xff1a;用Win10BloatRemover打造高效纯净系统 【免费下载链接】Win10BloatRemover Configurable CLI tool to easily and aggressively debloat and tweak Windows 10 by removing preinstalled UWP apps, services and more. Originally based on …...

暗黑破坏神2角色编辑器终极指南:如何轻松打造完美角色

暗黑破坏神2角色编辑器终极指南&#xff1a;如何轻松打造完美角色 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神2中无尽的刷装备、练级而烦恼吗&#xff1f;Diablo Edit2是一款…...

华为HarmonyOS用户必看:5分钟搞定MicroG完整安装与权限配置指南

华为HarmonyOS用户必看&#xff1a;5分钟搞定MicroG完整安装与权限配置指南 【免费下载链接】GmsCore Free implementation of Play Services 项目地址: https://gitcode.com/GitHub_Trending/gm/GmsCore 还在为华为HarmonyOS设备无法使用Google服务而烦恼吗&#xff1f…...

AD中域用户密码策略不生效的解决方案

每到一个月&#xff0c;AD就会提示修改密码&#xff0c;改就改吧&#xff0c;但是还提示一些乱七八糟的规则。 我把这些规则都禁用或是设为没有定义了&#xff0c;但还是报“不能和之前的0个密码相同”&#xff0c; 最后&#xff0c; 解决方案&#xff1a; 在域控制器服务器中&…...

Kaggle竞赛技能加速器:从特征工程到模型集成的系统化实战指南

1. 项目概述&#xff1a;一个为Kaggle竞赛量身定制的技能加速器如果你在数据科学竞赛的圈子里待过一阵子&#xff0c;大概率听说过Kaggle。这个平台就像一个全球数据科学家的“奥林匹克竞技场”&#xff0c;从预测房价到识别癌细胞&#xff0c;各种现实世界的问题被包装成竞赛&…...

ClawForgeAI:基于工作流编排的AIGC创意自动化平台解析

1. 项目概述&#xff1a;从“ClawForgeAI/clawforge”看AI驱动的创意工具新范式最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ClawForgeAI/clawforge”。光看这个名字&#xff0c;你可能会有点摸不着头脑——“ClawForge”听起来像是个游戏模组工具或者某种机械设计软…...

Cursor编辑器光标主题自定义指南:从原理到实践

1. 项目概述&#xff1a;一个为开发者准备的“光标”资源宝库如果你是一名开发者&#xff0c;或者对提升代码编辑器的视觉体验和操作效率有追求&#xff0c;那么你很可能听说过或正在使用 Cursor 这款新兴的代码编辑器。它凭借深度集成的 AI 能力和现代化的设计&#xff0c;吸引…...

BoxLite-AI:开箱即用的轻量级AI应用容器部署与优化指南

1. 项目概述&#xff1a;BoxLite-AI 是什么&#xff0c;以及它解决了什么问题 最近在折腾本地大模型部署和轻量化应用时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫 BoxLite-AI。乍一看这个名字&#xff0c;可能会联想到“盒子”和“轻量”&#xff0c;没错&#xff0…...

AlphaAvatar:从单目视频重建可驱动3D数字人的混合表示框架

1. 项目概述&#xff1a;从“数字人”到“阿尔法化身”的进化最近在数字人、虚拟形象生成这个圈子里&#xff0c;AlphaAvatar这个名字开始被频繁提及。它不是一个简单的换脸工具&#xff0c;也不是一个预设的3D模型库&#xff0c;而是一个旨在从单目视频中&#xff0c;高质量、…...

ARM PMU中断控制寄存器PMINTENCLR/PMINTENSET详解

1. ARM性能监控单元(PMU)架构概述 在现代处理器设计中&#xff0c;性能监控单元(Performance Monitoring Unit, PMU)是实现系统级性能分析和优化的关键组件。ARM架构从v7开始引入标准化的PMU设计&#xff0c;并在v8/v9架构中持续演进。PMU的核心功能是通过一组可编程事件计数器…...