剑指offer每日一题算法题(java解法)
方便日后复习,从今天开始。
算法之行始于足下
[编程题]从尾到头打印链表 – Java实现
------------------------------------------------------------------------------------------------------
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
非递归
解题思路:
1.创建个集合存放逆序的链表
2.再克隆个指针,存放值
3.遍历原链表,利用add方法不停插入第一个位置,再把指针下移
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list=new ArrayList<>();
ListNode tmp=listNode;
while(tmp!= null){
list.add(0,tmp.val);
tmp=tmp.next;
}
return list;
}
}
递归
解题思路:
1.也是和上面一样只是用原来的指针,把循环改为递归调用
2.传的是每次指针的下一个
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> list=new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!= null){
printListFromTailToHead(listNode.next);
list.add(0,listNode.val);
}
return list;
}
}