列印連結串列(學習遞迴思想)——牛客
阿新 • • 發佈:2018-11-16
題目描述
輸入一個連結串列,按連結串列值從尾到頭的順序返回一個ArrayList。
問題分析
注意從尾到頭,這個很符合棧的特性——FILO,考慮用棧。既然想到用棧的形式,可以聯想到遞迴方法,最終確定為遞迴解決本題。
程式碼實現
- 直接使用當前函式
class Solution {
public:
vector<int> dev;
vector<int>& printListFromTailToHead(struct ListNode* head) {
if(head!=NULL) {
if (head->next!=NULL) {
dev=printListFromTailToHead(head->next);
}
dev.push_back(head->val);
}
return dev;
}
};
呼叫函式實現(會消耗額外記憶體資源)
class Solution {
public:
vector<int> printListFromTailToHead(ListNode* head) {
vector<int> a;
push(head,&a);
return a;
}
void push(ListNode* head,vector<int> *a)
{
if(head==NULL) return;
if(head!=NULL)
{
push(head->next,a);
}
a->push_back(head->val);
}
};