LintCode题库问题--483 · 链表转数组

LintCode题库问题刷题解法记录


说明

记录自己在lintcode中遇到的问题的一些解法心得,能供自己时长查看

提示:以下是本篇文章正文内容,下面案例可供参考

-------------------------我是分割线------------------------

问题描述以及思路分析

如图所示
如上图描述的需要把一个单链表转化成顺序表,然后结合题目要求分析主要是考察单链表的遍历和顺序表的赋值,根据下图
在这里插入图片描述
的解题要求,可以看出节点类的属性值分别是val和next;
a)链表遍历主要也是使用循环遍历,判断节点类是否是空链表以及下一个后继节点是否为空,因为链表的逻辑地址和物理地址不同,物理地址是散点分布的,所以不能像遍历顺序表已用使用下标,而且根据第二个图中的ListNode节点类中也可以看出没有其它的内部方法可以使用;所以根据判断节点的条件可以使用while或者do-while(注意一下两者的区别,前者是先判断再执行,后者是先执行再判断,do-while是至少执行一遍循环体的,所以使用do-while需要先判断一下节点是不是为空)去遍历链表,个人使用的是while循环
b)顺序表的赋值就很简单了,初始化之后使用add方法依次插入节点数据即可
以下是给出的代码


public List toArrayList(ListNode head) {
// write your code here
List list=new ArrayList<>();
while(head!=null){
list.add(head.val);
head=head.next;

};
return list;
}


public List toArrayList(ListNode head) {
// write your code here
List list=new ArrayList<>();
if(head!=null){
do{
list.add(head.val);
head=head.next;
}while(head!=null);
}
return list;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值