题目描述
输入一个链表,按链表值从尾到头的顺序返回一个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);
}
};