剑指offer- 从尾到头打印链表C++实现
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(nullptr) {};
};
class Solution {
public:
vector<int> save_node;
vector<int> printListFromTailToHead(ListNode* head) {
if(head==nullptr)return {};
while (head != nullptr) {
save_node.push_back(head->val);
head = head->next;
}
reverse(save_node.begin(), save_node.end());
return save_node;
}
};
思路:
本题是链表入门级别的题目,比较简单,思路就是将链表中各个结点的值存到一个vector中,然后反转这个vector即可。考虑空值可以节省时间的损耗。
时间复杂度O(n),空间复杂度O(n)