首页 > 编程语言 >算法-两数相加(150)

算法-两数相加(150)

时间:2024-09-19 13:22:54浏览次数:13  
标签:150 ListNode cur 相加 next l2 l1 节点 两数

 我们首先创建一个虚拟头节点dummy,它的主要作用是简化边界条件的处理。然后,我们使用一个循环来遍历两个链表,同时考虑进位。在循环中,我们计算当前位的和(包括从上一个计算中可能遗留下来的进位),然后更新进位和当前节点。如果两个链表中的某个链表已经遍历完,我们将对应的值视为0。最后,我们返回虚拟头节点的下一个节点,它实际上是结果链表的头节点

代码如下:

public class addNumber {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummy=new ListNode(0);//创建一个虚拟头节点
        ListNode cur=dummy; //当前操作节点初始化为虚拟头节点
        int carry=0; //进位初始化为0
        while(l1!=null || l2!=null||carry>0){
            int x=l1!=null?l1.val:0;// 如果l1不为空则取l1的值否则取0
            int y=l2!=null?l2.val:0;
            int sum=x+y+carry;//计算当前位的和(包括进位)
            carry=sum/10;
            cur.next=new ListNode(sum%10); //创建新节点存储当前位的值
            cur=cur.next; //移动到下个节点
            if(l1!=null) l1=l1.next;
            if(l2!=null) l2=l2.next;
        }
        return dummy.next;//返回虚拟头节点的下一个节点作为结果链表的头节点
    }
}

注意这里的三元运算符,简化了运算。

cur.next= new ListNode(sum%10) 其实你就可以理解成 cur.next=sum%10;

标签:150,ListNode,cur,相加,next,l2,l1,节点,两数
From: https://blog.csdn.net/m0_46290969/article/details/142357711

相关文章

  • OpenAI以1500亿美元公司估值向投资者筹集65亿美元!安卓版谷歌Gemini Live免费上线|AI日
    文章推荐突发!OpenAI「Her」领头人离职!字节硬件与豆包联动,预推出AI耳机、眼镜等产品|AI日报今日热点安卓版谷歌GeminiLive免费上线据科技媒体9to5Google报道,谷歌在1个月前面向Advanced订阅用户推出后,正逐步面向所有安卓用户免费开放GeminiLive。GeminiLive采用了增强型语音引擎,可......
  • 150页极简入门大模型!看完这本蛇尾书,大模型从入门到精通!
    如果问个问题:有哪些产品曾经创造了伟大的奇迹?ChatGPT应该会当之无愧入选。仅仅发布5天,ChatGPT就吸引了100万用户——当然,数据不是关键,关键是其背后的技术开启了新的AI狂潮,成为技术变革的点火器。就算我们这些周边吃瓜群众都日日活在ChatGPT带来的震撼里,更不用说在......
  • 代码随想录算法训练营第七天|第454题.四数相加II 383. 赎金信 第15题. 三数之和 第18
    第454题.四数相加II给定四个包含整数的数组列表 A,B,C,D,计算有多少个元组(i,j,k,l) ,使得 A[i]+B[j]+C[k]+D[l]=0。为了使问题简单化,所有的A,B,C,D具有相同的长度 N,且0≤N≤500。所有整数的范围在-2^28到2^28-1之间,最终结果不会超......
  • Day5||242.有效的字母异位词|349.两个数组的交集|202.快乐数|1.两数之和
    哈希表理论基础哈希表(hashtable):是根据关键码的值而直接进行范围的数据结构。如数组也是一张哈希表。 解决问题:一般哈希表都是用来快速判断一个元素是否出现集合里。(牺牲空间换取时间)例如要查询一个名字是否在这所学校里。要枚举的话时间复杂度是O(n),但如果使用哈希表......
  • leetCode2:两数相加(链表)
    题目:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。思路:遍历两个链表,逐位相加,还要加上进位结......
  • error: rpmdb, failed: BDB1507 Thread died in Berkeley DB library,error(-30973) fro
    rpm数据库错误,一般原因:yum更新等rpm软件安装进程被异常终止[root@49bdfccd7f61~]#yuminstall-yxxxerror:rpmdb:BDB0113Thread/process22858/140222685267712failed:BDB1507ThreaddiedinBerkeleyDBlibraryerror:db5error(-30973)fromdbenv->failchk:BDB0......
  • 【1. 两数之和】
    题目:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target......
  • 代码随想录算法训练营Day5 | 哈希表理论基础、242.有效的字母异位词、349.两个数组的
    哈希表理论基础哈希表哈希表是根据关键码的值而直接进行访问的数据结构。数组就是一张哈希表,哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,如下图所示:哈希表一般用来快速判断一个元素是否出现集合里。哈希函数哈希函数通过特定编码方式,可以将其......
  • Leetcode面试经典150题-739.每日温度
    应读者私信要求,本题协商题目的具体内容给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。示例1:输入:temperatures=[73,74,......
  • 【LeetCode Hot 100】2. 两数相加
    题目描述题目手下留情给出的链表使用逆序表示加数,因此我们可以从链表头开始逐位相加。我总结了一下有几点需要注意:显然加法需要注意进位,此外需要格外注意的是最后一位没有加数时,还需要考虑进位是否被置位,如果最后的进位为1,我们还需要创建一个新的节点。当其中一个链表走完,需要......