链表反转

时间复杂度O(n),空间复杂度O(1)。

需要3个指针,t指向上一个节点,tt指向当前节点,ttt记录下一个节点,当前节点的next指向上一个节点,注意尾巴节点的next为nullptr

if(head==nullptr || head->next==nullptr) return head; // 链表为空或者只有一个节点

        ListNode *t=head,*tt=head->next;

        bool sign=true; // 标记第一次改变指向时,尾巴节点的next设为nullptr

        while(tt!=nullptr){

            ListNode *ttt=tt->next;

            tt->next=t;

            if(sign){

                t->next=nullptr;

                sign=false;

            }

            t=tt;

            tt=ttt;

        }

        return t;

全部评论

相关推荐

点赞 评论 收藏
分享
2024-12-26 20:46
复旦大学 C++
国棉17厂丶小王:拿了offer的那个周末晚上去网吧通宵,去网吧不知道玩什么刷了lc的每日一题,然后试着第一次打开了三角洲行动,从此少了一个已经刷了700道题的lc用户,但是烽火地带多了一只🐭🐭
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务