剑指 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

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

 

相关文章:

  • 2021-05-01
  • 2021-08-11
  • 2022-02-13
  • 2021-11-16
  • 2021-11-02
  • 2022-01-28
  • 2022-12-23
猜你喜欢
  • 2021-05-14
  • 2021-09-04
  • 2021-06-17
  • 2021-09-09
  • 2021-12-28
相关资源
相似解决方案