欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

每日一题——剑指Offer24反转链表

时间:2023-05-30

如果您是第一次看我写的博客,可以给我点个赞并关注我吗,我会持续分享更多有意思的干货。

文章目录

1 题目2 思路3 代码4 小结 1 题目

剑指 Offer 24、反转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

限制:

0 <= 节点个数 <= 5000

2 思路

最开始我是想尝试用头插法的思路,把数据从原有的链表中读取出来后用头插法放入一个新链表中。但是我犯了一个错误,原题意没有头结点!所以头插法在没有头结点的情况下就显得有点无奈了。

为此在网上翻阅步骤后,我学到了一个小窍门,即无需创建一个新的链表,在原有链表的基础上,我们可以改动原来链表指针的朝向即可。

既然有了思路,我们立马动手吧!

3 代码

class Solution {public: ListNode* reverseList(ListNode* head) { ListNode * cur = head; ListNode * pre = NULL; ListNode * Temp = NULL; while(cur != NULL) { Temp = cur->next; cur->next = pre; pre = cur; cur = Temp; } return pre; }};

4 小结

实际上,如果在最后的题意中能够把head指向逆置链表的首元节点就更完美了。对于这道题的解法来说时间复杂度是O(n),空间复杂度是O(1),其花的时间主要用于遍历上。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。