题目
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例 1:
输入:head = [1,3,2]
输出:[2,3,1]
限制:
0 <= 链表长度 <= 10000
思路
倒置输出链表。这种倒置输出一般都可以递归的输出。如果题目可以占用额外空间,还可以先顺序一遍保存,然后倒序输出,类似于栈。
代码
栈的实现太简单了,这里给递归的。
#include<iostream>
#include<vector>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> vec;
solve(vec, head);
}
void solve(vector<int>& vec, ListNode* head) {
if (head == nullptr) return;
solve(vec, head->next);
vec.push_back(head->val);
}
};