1. 程式人生 > 實用技巧 >劍指Offer 06.從尾到頭列印連結串列

劍指Offer 06.從尾到頭列印連結串列

輸入一個連結串列的頭節點,從尾到頭反過來返回每個節點的值(用陣列返回)。

示例 1:

輸入:head = [1,3,2]
輸出:[2,3,1]

思路:一開始想的是:用一個List ,動態的記錄連結串列節點的值,但是 List 每一次 add( n ) 耗時太久,而且最後 List 轉為 int[ ] 頁不方便。

改進思路:利用 2 次遍歷,來換取 List 存值、以及最後取值放入 int[ ] 的開銷。

class Solution {
    public int[] reversePrint(ListNode head) {
        ListNode tmp = head;
        
int count = 0; while(tmp != null){ count++; // 第一次遍歷,得到連結串列節點的個數 tmp = tmp.next; } int[] res = new int[count]; //申請同樣大小的陣列 while(head != null){ res[--count] = head.val; // 第二次遍歷,往數組裡面記錄值 head = head.next; } return
res; } }

  

從時間上來看,多遍歷一次還是划算的。