题解 | #从尾到头打印链表#

从尾到头打印链表

https://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    void recursion(ListNode* head, vector<int>& res){
        if (head != 0) {
            recursion(head->next, res);
            res.push_back(head->val);
        }
    }
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> res;
        recursion(head,res);
        return res;
    }
};

因为是要逆序写入到数组中,链表只能顺序读取节点,因此考虑栈先进后出的性质,通过递归实现。

注意递归函数的形式参数需用vector<int>& res来保证res值可以更改,而vector<int> res意味着函数会创建一个副本,而不会改变输入的实参。

全部评论

相关推荐

10-23 13:31
新疆大学 Java
鼠鼠理解的&nbsp;redis&nbsp;的单线程:&nbsp;&nbsp;&nbsp;是指Redis的网络IO和键值对读写是由一个线程来完成的&nbsp;诸如持久化,异步操作,集群同步都是多线程&nbsp;是这样吗,牛油们求指教&nbsp;ave&nbsp;mujica&nbsp;镇楼
ssp到手了的小白很想退休:针对响应客户端请求的过程是单线程完成,但Redis本身并不是单线程且在后续版本引入了多线程处理IO请求,特别是写请求
点赞 评论 收藏
分享
09-02 17:43
门头沟学院 C++
空๑۩۞۩๑白:学历硬伤,先多看看中厂拿个保底吧
点赞 评论 收藏
分享
10-16 22:56
门头沟学院 C++
1234567800:歌尔今年给211开14-15k吗,我本地人连面试都不给😂
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务