Loading

剑指 Offer 06. 从尾到头打印链表

思路

(1) 先正序保存下来,之后转换成逆序,用reverse函数,或者stack等等

(2) 使用递归

 

代码实现

递归解法:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     vector<int> reversePrint(ListNode* head) {
12         vector<int> v;
13         f(v, head);
14         return v;
15     }
16 
17     //逆序,可以想到递归
18     void f(vector<int>& v, ListNode* p) {
19         if(p == NULL)
20             return;
21         f(v, p->next);
22         v.push_back(p->val);
23     }
24 };

 

复杂度分析

时间复杂度:O(n),n为链表长度

空间复杂度:O(n),递归深度为n

 

posted @ 2020-10-20 15:13  拾月凄辰  阅读(62)  评论(0编辑  收藏  举报