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

  • 相关阅读:
    HDU 2544 (Djikstra)
    HDU 1237(表达式求值)
    HDU1690 (Floyd)
    《大道至简》读后感
    第6周总结
    第8周总结
    第7周总结
    第四周总结
    第5周总结
    java程序
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/13846604.html
Copyright © 2020-2023  润新知