[劍指offer] 從尾到頭列印連結串列(Java)
阿新 • • 發佈:2019-01-10
題目描述
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。
思路:從頭到尾把值輸入到棧裡面,然後出棧;或者用遞迴的方法;或者Collections的reverse()反轉list值
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> list = new ArrayList<Integer>(); Stack<Integer> stack = new Stack<Integer>(); if(listNode==null) return list; while(listNode!=null){ stack.push(listNode.val); listNode = listNode.next; } while(!stack.empty()){ list.add(stack.pop()); } return list; } }
解法二:
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); if(listNode==null) return list; if(listNode!=null){ list = printListFromTailToHead(listNode.next); list.add(listNode.val); } return list; } }
解法三:
import java.util.ArrayList; import java.util.Collections; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> list = new ArrayList<Integer>(); while(listNode!=null){ list.add(listNode.val); listNode = listNode.next; } Collections.reverse(list); return list; } }