三种做法
1. 简单遍历到列表,然后反转
2. 递归
3. 反转链表,再遍历。
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> f1(ListNode listNode){
ArrayList<Integer> temp= new ArrayList<Integer>();
while(listNode!=null){
temp.add(listNode.val);
listNode=listNode.next;
}
int i=0,j=temp.size()-1;
while(i<j){
int tt = temp.get(i);
temp.set(i,temp.get(j));
temp.set(j,tt);
i++;j--;
}
return temp;
}
public void f2(ListNode listNode,ArrayList<Integer> list){
if(listNode==null)return;
f2(listNode.next,list);
list.add(listNode.val);
return;
}
public ArrayList<Integer> f3(ListNode listNode){
ListNode pre = null;
ListNode cur = listNode;
ListNode temp = cur;
while(cur!=null){
temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
ArrayList<Integer> res = new ArrayList<>();
while(pre!=null){
res.add(pre.val);
pre=pre.next;
}
return res;
}
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
return f3(listNode);
}
}