题解

解法1:栈

利用栈后进先出的特点,只需要遍历一次链表,然后将栈内元素依次弹出即可。
代码:

class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        stack<int> st;

        vector<int> ans;

        if(head == nullptr)
            return ans;
        while(head)
        {
            st.push(head->val);
            head = head->next;
        }
        while(!st.empty())
        {
            ans.push_back(st.top());
            st.pop();
        }
        return ans;
    }
};

解法2:常规做法

遍历一次链表,每个元素直接加入到vector中,然后翻转vector即可
代码:

class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> ans;
        ans.clear();
        ListNode* now = head;

        while(now)
        {
            ans.push_back(now->val);
            now = now->next;
        }
        reverse(ans.begin(), ans.end());

        return ans;
    }
};

解法3:翻转链表

将链表翻转以后再进行一次遍历即可,翻转链表最简单的做法就是对原链表进行一次头插法遍历
例如1->2->3 将2重新头插得到2->1->3 再将3重新头插得到3->2->1
这种做法会改变原链表,故不在此实现了

最后,三种做法的时间复杂度都是, 空间复杂度都是

全部评论

相关推荐

06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
黑皮白袜臭脚体育生:看了这篇帖子之后已经第一百次质问老妈,仍然没有得到我的老妈是老板的回答
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务