算法: 两数相加

问题

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

解决

/**
 * 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 pre=null,cur=null;
        int carr=0 ;                     //进位标志
        while(l1!=null||l2!=null){
            int n1= l1!=null? l1.val:0;         //l1不是空,n1就是l1的值,否则就是0
            int n2= l2!=null? l2.val:0;
            int sum=n1+n2+carr;         //当前两个结点和

            if(cur==null){
                cur=pre=new ListNode(sum%10);
            }else{
                pre.next=new ListNode(sum%10);      //这里是pre的下一个,因为cur原本已经有值了
                pre=pre.next;
            }

            carr=sum/10;            //不能用%,因为这里是只要十位上面的数
            if(l1!=null)  l1=l1.next;
            if(l2!=null)  l2=l2.next;
        }
        if(carr>0) pre.next=new ListNode(carr%10);
        return cur;
    }
}



总结

posted @   new_monkey  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示