题目描述
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
反转数组法:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr=new ArrayList<Integer>();
while(listNode!=null){
arr.add(listNode.val);
listNode=listNode.next;
}
for(int i=0;i<arr.size()/2;i++){
Integer temp=arr.get(i);
arr.set(i,arr.get(arr.size()-i-1));
arr.set(arr.size()-i-1,temp);
}
return arr;
}
}
栈法:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr=new ArrayList<Integer> ();
Stack<Integer> stack=new Stack<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
while(!stack.empty())
arr.add(stack.pop());
return arr;
}
}
函数递归法:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
import java.util.Stack;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> arr=new ArrayList<Integer> ();
xx(listNode,arr);
return arr;
}
void xx(ListNode listNode,ArrayList<Integer> arr) {
if(listNode!=null){
xx(listNode.next,arr);
arr.add(listNode.val);
}
}
}