2. 两数相加
2026/7/22 21:20:29 网站建设 项目流程
/** * 【题目名称】两数相加<p> * 【题目来源】https://leetcode.cn/problems/add-two-numbers/description/ * * @author 潘磊,just_panlei@just.edu.cn * @version 1.0 */classSolution{/** * 返回两个指定用非空链表逆序表示的非负整数的和。 * * @param l1 指定用非空链表逆序表示的非负整数。 * @param l2 指定用非空链表逆序表示的非负整数。 * @return l1与l2的和。 */publicListNodeaddTwoNumbers(ListNodel1,ListNodel2){ListNodeans=newListNode();// l1+l2的结果ListNodecurrentDigit=ans;// 对位加法结果的每位数字intcarry=0;// 每次对位加法产生的进位,初始为0intdigitOfL1;// l1的每位数字intdigitOfL2;// l2的每位数字/* 在l1或者l2尚未遍历完毕时 */while(l1!=null||l2!=null){digitOfL1=(l1==null?0:l1.val);// 获取l1当前位的数字,没有则用0替代digitOfL2=(l2==null?0:l2.val);// 获取l2当前位的数字,没有则用0替代currentDigit.val=digitOfL1+digitOfL2+carry;// 计算当前对位加法的结果if(currentDigit.val>9){// 如果当前对位加法产生进位carry=1;// 更新进位为1currentDigit.val%=10;// 更新当前位加法的结果,仅保留个位数字}else{// 否则,当前对位加法没有产生进位carry=0;// 更新进位为0}l1=(l1!=null?l1.next:null);// 取l1的下一个节点,没有则为nulll2=(l2!=null?l2.next:null);// 取l2的下一个节点,没有则为nullif(l1!=null||l2!=null){// 如果l1或者l2至少有一个可以继续提供数字currentDigit.next=newListNode();// 开辟下一个对位加法结果的节点currentDigit=currentDigit.next;// 更新当前对位加法结果的指向}}if(carry==1){// 如果最后一次对位加法产生进位currentDigit.next=newListNode(carry);// 开辟下一个节点,并初始化值为1}returnans;// 返回l1+l2的结果}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询