题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
分析
实现链表从尾到头打印,我先想到的是可以先反转链表,然后再从头到尾将元素值加入ArrayList中,最后return list即可,也就是分两步,第一步反转,第二步结点值循环添加进入ArrayList。
实现代码如下:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
// 1、头插法反转链表
ArrayList<Integer> list = new ArrayList<>();
if(listNode == null){
return list;
}
ListNode head = new ListNode(-1);
while (listNode != null) {
ListNode temp = listNode.next;
listNode.next = head.next;
head.next = listNode;
listNode = temp;
}
// 2、添加进ArrayList
head = head.next;
while (head != null) {
list.add(head.val);
head = head.next;
}
return list;
}
}