劍指 offer 06. 從尾到頭列印鍊錶
輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值(用陣列返回)。
示例 1:
輸入:head = [1,3,2]
輸出:[2,3,1]
限制:0 <= 鍊錶長度 <= 10000
1. vector
前到後遍歷鍊錶,將val值存放在vector裡面,由於要反過來列印,因此可以利用vector的reverse函式進行反轉,然後在輸出即可
執行用時:8 ms, 在所有 c++ 提交中擊敗了72.64%的使用者
記憶體消耗:8.7 mb, 在所有 c++ 提交中擊敗了83.90%的使用者
struct listnode};
class
solution
reverse
(ans.
begin()
,ans.
end())
;return ans;}}
;int
main()
2. stack 棧 先進後出
該方法與方法1大同小異
前到後遍歷鍊錶,由於要反過來列印,與棧先進後出功能吻合,所以先將val值存放在stack裡面,然後再放回vector
12 ms 8.8 mb
class
solution
while
(!ans_temp.
empty()
)return ans;}}
;
3.遞迴
棧和遞迴往往關聯在一起
執行用時:4 ms, 在所有 c++ 提交中擊敗了96.53%的使用者
記憶體消耗:11.5 mb, 在所有 c++ 提交中擊敗了6.79%的使用者
vector<
int>
reverseprint
(listnode* head)
ans.
push_back
(head-
>val)
;return ans;
}
劍指offer06 從尾到頭列印鍊錶
題目 從尾到頭列印鍊錶 思路 1,注意傳入函式的是指向煉表頭的指標,在函式中不應該直接使用這個指標,而是應該用乙個指標的臨時變數來遍歷鍊錶 2,方法一 使用棧來實現 3,方法二 遞迴在本質上就是乙個棧結構,所以也可以用遞迴來實現 solution include include include us...
劍指offer 06 從尾到頭列印鍊錶
輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值 用陣列返回 示例 1 輸入 head 1,3,2 輸出 2,3,1 限制 0 鍊錶長度 10000 鍊錶特點 只能從前至後訪問每個節點。題目要求 倒序輸出節點值。這種先入後出的需求可以借助棧來實現。通過linkedlist類來實現棧 入棧 遍歷鍊...
劍指 Offer 06 從尾到頭列印鍊錶
題目描述 輸入乙個鍊錶的頭節點,從尾到頭反過來返回每個節點的值 用陣列返回 解題思路 1 在不允許修改鍊錶的結構的條件下,採用棧輔助 2 新建乙個棧,stackstack new stack 將鍊錶的節點依次壓入棧中 新開乙個陣列,int print new int size 用來儲存從棧中彈出的值...