劍指offer 從尾到頭列印鍊錶

2021-09-12 00:14:03 字數 1184 閱讀 4590

輸入乙個鍊錶,按煉錶值從尾到頭的順序返回乙個arraylist。

思路1:

將鍊錶值正序放到乙個list裡,再將該list倒序放入另外乙個list。emmmmm有點傻。

public static arraylistprintlistfromtailtohead(listnode listnode) 

while (listnode.next!=null)

arr.add(listnode.val);

arraylistarr1 = new arraylist();

for(int i=arr.size()-1;i>=0;i--)

return arr1;

}

時間複雜度o(n)吧。

思路2:

現將鍊錶翻轉,再順序放入list中

public static arraylistprintlistfromtailtohead1(listnode listnode) 

listnode pre = null;

listnode next = null;

while (listnode!=null)

while (next!=null)

return arr;

}

思路3:

利用棧。將鍊錶元素壓入棧,最後順序出戰放入list。

public static arraylistprintlistfromtailtohead3(listnode listnode) 

stacks = new stack();

while (listnode!=null)

while (!s.empty())

return arr;

}

思路4:

使用遞迴。

public static arraylistprintlistfromtailtohead4(listnode listnode) 

arraylistarr = printlistfromtailtohead4(listnode.next);

arr.add(listnode.val);

system.out.println(arr);

return arr;

}

劍指Offer 從尾到頭列印鍊錶

題目1511 從尾到頭列印鍊錶 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 1082 解決 350 題目描述 輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入 每個輸入檔案僅包含一組測試樣例。每一組測試案例包含多行,每行乙個大於0的整數,代表乙個鍊錶的節點。第一行是鍊錶第乙個節點的...

劍指offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。輸入描述 輸入為鍊錶的表頭 輸出描述 輸出為需要列印的 新鍊錶 的表頭 分析 題目本意是用的棧結構的先入後出,但是有了容器類的高階方法之後,使用棧的意義就不大了。c struct listnode class solution listnode p hea...

劍指Offer 從尾到頭列印鍊錶

輸入乙個鍊錶,從尾到頭列印鍊錶每個節點的值。個人認為如果本題就只是列印的話,最好不要反轉鍊錶 你什麼時候見過列印函式改變資料結構了的 我的思路 儲存順序值,然後反轉。注意 1 reverse vprint.begin vprint.end algorithm的使用!2 重新構造。以上兩種衡量選擇。另...