Leetcode练习日记 Day-1

本文详细解析了LeetCode经典题目“两数相加”的解决方案,通过定义链表节点类并实现相加逻辑,展示了如何处理链表进位问题,附带完整Java代码示例及调试技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Leetnode学习日记@TOC

Day-1 T2 两数相加

题目如下:

先定义一个类来储存结点。既要存值,int型;又要能够指向下一个结点,即也为这个结点的类型。代码如下:

    public class Listnode{
        public int val;
        public Listnode next;

        public Listnode(int i)
        {this.val=i;}

        public int val()
        {return val;}
    }

然后来写这两个结点相加的函数。其实和一般的百位数相加的做法很像,需要一个进位项。然后这边我们是一个一个读入的,并且根据题意需要判断下一个结点是否会为空。 So…代码如下:

public Listnode add2Num(Listnode l1, Listnode l2){
        Listnode DHead=new Listnode(0);
        Listnode p=l1, q=l2, curr=DHead;
        int carry=0;
        while(p!=null || q!= null) {
            int x = (p!=null)?p.val:0;
            int y = (q!=null)?q.val:0;
            int sum = carry + x+y;
            carry = sum/10;
            curr.next=new Listnode(sum%10);
            curr= curr.next;
            if(p!=null) p=p.next;
            if(q!=null) q=q.next;
        }
        if(carry>0) {
        curr.next=new Listnode(carry);
       } 
       return DHead.next;
    }

最后来写主函数,因为是一个嵌套类,所以我一开始在给赋值的时候迷茫了很久…所以要声明这个类,然后再 对象.new 嵌套类 ,而且是一个一个读的,感觉上有点像动态数组。
这边链接一个百度上搜到的Java嵌套类

    public static void main(String[] args) {
        leetcode x = new leetcode();
        Listnode a = x.new Listnode(2);
        Listnode b = x.new Listnode(3);
        Listnode c = x.new Listnode(4);
        a.next=b;
        b.next=c;
        c.next=null;

        Listnode d = x.new Listnode(5);
        Listnode e = x.new Listnode(6);
        Listnode f = x.new Listnode(7);
        d.next=e;
        e.next=f;
        f.next=null;

        Listnode re=x.add2Num(a,d);
        while(re!=null){
            System.out.print(re.val+" ");
            re=re.next;
        }
    }

最后的时候出了一点问题,比起debug…因为最近知道了一个好用的网页,叫Java visualizer,可以一步一步把你的存的各种值啊什么显示出来,更直观一些。链接在此:Java visualizer 但是可能需要翻墙…最近这就比较麻烦

emmm…第一天就先到这儿了,欢迎各位大佬前来指正。我的数据结构学的太垃圾了…就有点迷迷糊糊的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值