天天看點

JZ3 從尾到頭列印連結清單

描述

輸入一個連結清單的頭節點,按連結清單從尾到頭的順序傳回每個節點的值(用數組傳回)。

如輸入{1,2,3}的連結清單如下圖:

JZ3 從尾到頭列印連結清單

傳回一個數組為[3,2,1]

思路:反向列印連結清單,這種題目,一條思路是通過遞歸,遞歸到最後,再将值添加到所建立的數組當中。

這個方法主要是用于加強對遞歸使用的了解,但是無法AC。

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(listNode.val);
        }
        return list;
    }
}
           

第二個思路:利用棧來,将周遊連結清單中的數,将其添加到棧當中。

接着出棧添加到list當中。

import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    Stack<Integer> stack=new Stack<>();
    ArrayList<Integer> list=new ArrayList<>();
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        while(listNode!=null){
            stack.push(listNode.val);
            listNode=listNode.next;
        }
        while(!stack.empty()){
            list.add(stack.pop());
        }
        return list;
    }
}
           

繼續閱讀