java数据结构与算法刷题-----LeetCode2:两数相加

LeetCode答案大全 LeetCode答案整理,是一个风场好的大拿资源大全。如果你想面试,是非常有用的 立即下载
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析
  1. 因为是倒着存数字,所以正好是[个,十,百,千,…]这样的形式
  2. 那么两个链表相应的位,进行相加就可以了,需要处理进位,比如9+1 = 10,需要进1
  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 {
    /**
        因为是逆序的,所以正好是[个,十,百,千,....]这样的形式,那么从个位依次相加就可以了
        直接遍历,两位相加,用num记录相加的值,ten保存进位的值(比如9+9=18,ten就将进位的1保留)
        第二次,两位相加时,需要加上ten
        输入:l1 = [9,9,9,9,9,9,9], 
             l2 = [9,9,9,9]
             num = 18,9,9,9,10
             ten = 1 ,1,1,1,1
        result   = 8,9,9,9,0
     */
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        if(l1 == null)return l2;
        if(l2 == null)return l1;
        int num = 0,ten = 0;//num保存数字,ten保存进位
        //返回结果
        ListNode result =new ListNode();
        ListNode resultHead = result;
        //用来处理两个链表不一样长的,只要不一样长,就让长的超出去的部分,每次+0
        ListNode zero = new ListNode(0);
        while(true){
            num = l1.val + l2.val + ten;//每次要+ten
            ten = num/10;//进位
            result.next = new ListNode(num%10);//赋值
            result = result.next;//后移
            l1 = l1.next == null ? zero:l1.next;//处理l1后移,和l1比l2短的情况
            l2 = l2.next == null ? zero:l2.next;//处理l2后移,和l2比l1短的情况
            if(l1==l2 && num<10 && ten<=0) break;//终止循环的条件
        }

        return resultHead.next;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
LeetCode2 Add Two Numbers You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. java AC版本 立即下载

相关推荐

TensorRT-LLM.V1.1.0rc0:在无 GitHub 访问权限的服务器上编译 TensorRT-LLM 的完整实践

1.NGC上的预构建发布容器进行部署,见《2.通过pip进行部署。3.从源头构建再部署。在实际开发中,我们常常面临这样的场景:本地笔记本为 Windows 系统,虽然可以访问 GitHub,但受限于硬件性能,编译大型项目(如 TensorRT-LLM)耗时过长;而公司或实验室提供的 Linux 服务器性能强劲,适合编译任务,但却因网络策略限制无法连接外网,尤其是无法访问 GitHub。。

xinvictory的专栏 1205

【LeetCode】2. 两数相加

题目描述: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 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]

记录、总结 1504

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变化和联系,就能够给推荐带来更好的效果。在2021年上半年,首页推荐的召回、粗排、精排的主要模块都保持在天级更新的状态,我们通过持续迭代,将召回 CF 渠道、召回索引更新、召回模型/粗精排模型的训练都做到了分钟级更新,为首页推荐的分发效率带来飞跃式提升,并给业务侧带来非常显著的收益。 小红书站内“最近一天内发布的新笔记”在首页的曝光占比一直很高,这段时间更是快速

REDtech_1024的博客 3529

LeetCode第二题:两数相加(Java)

文章目录前言一、题目内容二、解题过程1. 解题思路2. 解题代码三、提交结果总结 前言 面对困难,许多人望而却步,而成功的人士往往非常清楚,只要敢于和困难拼搏一番,就会发现,困难不过如此! 一、题目内容 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例1: 输入: l1 = [2,4,3], l2 = [5,6,4]

世纪末的架构师的博客 4349

欧姆龙 CJ1W-SCU模块使用通配符+结束码实现非固定长度数据的接收

实验设备:CJ2M-CPU33、CJ1W-SCU21、XW2Z-200T 实验目的:了解 CJ1W-SCU 通配符使用 1.硬件接线: CJ1W-SCU21单元号拨码置于8,使用串口1(232口)。 2.软件设置: ① 新建工程,选择PLC型号CJ2M-CPU33,切换到编程模式,如下图: 、 ② 创建I/O并进行相关配置,如下图: ③ 设置为用户设置,协议宏模式,8位数据位,2位停止位,偶校验9600波特率,如下图: 、 ④ 打开CX-Protocal软件,新建工程: .

weixin_42118352的博客 1986

在 CentOS7 下安装 Cadence IC验证平台 INCISIVE152

前言 本文所使用的软件 虚拟机软件:VMware Workstation 15 PRO 如何安装? 操作系统:CentOS-7, CentOS-7-x86_64-DVD-1810.iso 如何安装? 简介 INCISIVE Incisive是nc_verilog, nc_sim, nc_lauch,以及ABV,TBV的集合,用于仿真和验证。 InstallScape InstallSc...

沈醉不知的博客 2万+

LeetCode-2-两数相加(Java实现)

给你两个的链表,表示两个非负的整数。它们每位数字都是按照的方式存储的,并且每个节点只能存储数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

bbbbb___的博客 566

向量数据库安全实战:从Embedding反推到检索越权的全链路防护

随着RAG应用在企业中的普及,向量数据库已成为知识库系统的核心组件。但许多团队对向量数据的安全认知仍停留在传统数据库的账号密码、网络隔离和磁盘加密上。事实上,向量化并非加密,而是一种有损压缩的语义映射,向量本身可以被反推模型还原出原文关键信息,形成高保真的语义泄露通道。同时,相似度检索的模糊匹配特性打破了传统行列权限模型,使得越权检索和成员推断攻击成为新的安全威胁。理解这些原理,有助于企业在数据采集、向量化、索引构建、检索查询等环节构建分层防护体系,包括脱敏、扰动、过滤下推、网关控制等手段。本文从基础概念出

weixin_29323551的博客 260

【Java算法题】Leetcode 2. 两数相加

链表节点数值相加,进位

zoetu 266

三轴云台稳定控制算法优化实战:从PID到模糊自适应

本文深入探讨了三轴云台稳定控制算法的优化实践,从经典PID控制到模糊自适应算法的进阶应用。通过实战案例和代码示例,详细解析了PID调参技巧、模糊控制实现及多传感器数据融合方法,帮助工程师在复杂环境下提升云台抗干扰能力和响应速度,特别适用于无人机航拍等场景。

green的博客 915

数据结构课程设计--基于知识图谱的中医食疗数据管理与应用

【代码】数据结构课程设计--基于知识图谱的中医食疗数据管理与应用。

M_inherit的博客 568

Java【手撕链表】LeetCode 2. “两数相加“, 图文详解思路分析 + 代码

图文并茂详解经典链表题目"两数相加", 使用傀儡头结点辅助构建新链表

yzhcjl_的博客 623

【乐企文件生成工程】乐企文件生成支持所有特定要素类型发票

【代码】【乐企文件】乐企文件生成最新更新!!!

九七的博客 851

力扣算法第二题:两数相加

力扣第二题 题目 两数相加 思路及问题 1.首先,没学过怎么用java表示链表,或者学过忘了。所以得查一下怎么表示。 JAVA表示链表*[作者YSOcean] 2.行吧,看了一下午还是不会,然后就直接看答案了,看答案还是有点一愣一愣的,理解得有点模糊,状态都不在了,先缓一下。但是先贴上答案代码,然后再说说自己的理解。 代码 public ListNode addTwoNumbers(ListNo...

Zero_HWA的博客 6090

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode第2题,两数相加算法——最易理解Java解法

我们先来看一下题,如果对链表不太理解的话,可以看一下这篇https://blog.youkuaiyun.com/weixin_44407699/article/details/97612030 给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以...

Lanly-Li的博客 5947

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【小Y学算法】⚡️每日LeetCode打卡⚡️——2.两数相加

没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。所以说,树倒了,没有一片雪花是无辜的

努力前行,总会成为自己心中的那道光 1万+

LeetCode第二题:两数相加(Add Two Numbers)

LeetCode第二题:两数相加 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two num...

三年研究生能改变多少 5220

Leetcode 第2题 两数相加(Java实现)

Leetcode 第2题 两数相加(Java实现) 解题思路 刚刚学完韩顺平老师的《数据结构与算法》的链表部分,就来leetcode上找了一道题来练习。 首先定义一个ListNode的类,val用来存放整型数据,.next指向下一个节点; 再定义两个链表相加的函数,输入为链表l1和l2; 2.1定义一个头节点head,它不用来存放数据,只是用于索引; 2.2 定义一个类型为ListNode的中...

zz651044657的博客 476

LeetCode Hot 100题每日刷题 :两数相加

leetcode hot 100 : 两数之和 百分百速度,截图思路,刷题利器思路推荐

doomwatcher的博客 683

数据结构与算法刷题每日记录:两数之和、两数相加

查看了LeetCode上的时间度最少和内存消耗最少的解法,我的写法代码部分有些冗余,没那么简单直接。

weixin_68657865的博客 677

Java实现 LeetCode 2 两数相加

两数相加 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节...

5490

力扣刷题合集(持续更新)

在过去一年的时间里, 我在力扣这个平台刷了很多很多的题, 后面就转战牛客, 蓝桥云课等竞赛平台了, 现在我以此篇文章来对力扣刷题做个总结。由于本人水平有限, 仅仅做经验分享 ,但还是希望这篇文章对你有所帮助, (语言的话, 这次就选择C++和Java, 但是本人很少用Java刷题, 因此会在题目中介绍的java的相关方法, 也就当学习了)学过面向对象都知道, 力扣是采用核心代码模式, 只用去实现对应类中的方法即可, 那我们直接开讲吧(由于题目可能会有很多, 所以就不贴题目, 只分享思路和代码)

Script_Kids的博客 738

LeetCode 2. 两数相加:链表操作

题目:两数相加 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 ...

AI天才研究院 9234

力扣刷题手册

前言: 随缘刷题,认真记录 文章目录字符串相加K次操作转字符串找出数组游戏的赢家粉刷天花板整理字符串 字符串相加 8/3力扣415字符串相加. 用字符串的方法来模拟加法过程,使用双指针从尾部开始遍历,逐个相加: 需要解决的问题: 进位。 两数长短不一致。 解决方案: 进位问题: 用一个变量记录每次相加中有没有进位,如果进位了该位置1,将加到下一个两两相加的结果中。 两数长度不一样: 有一个数已经到达数组头部时(已经加完了) 将其设为0,依然相加。 class Solution { pub.

zzzlueng的博客 1839

力扣刷题链表第2题两数相加精解

0、题目链接 力扣 1、题目分析 2. 两数相加 难度中等7007 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0开头。 2.变量设置 及其基本数据类型分析 这个题就是给出两个链表,长度至少为1,链表每个节点内的值至少为0 求两个链表相加之后的和 也就是如题 9 9 9 9 9 9 ...

m0_56164356的博客 1516
上一篇: java数据结构与算法刷题-----LeetCode94:二叉树的中序遍历
下一篇: java数据结构与算法刷题-----LeetCode3:无重复字符的最长子串
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值