題目描述
輸入一個鏈表,按鏈表值從尾到頭的順序返回一個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);
}
};