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