143. 重排链表

143. 重排链表,第1张

143. 重排链表

寻找链表中点 + 链表逆序 + 合并链表

class Solution {
public:
    void reorderList(ListNode* head) {
        ListNode* midnode = head;
        ListNode* fast  =head;
        while(fast != nullptr && fast->next != nullptr){
            midnode = midnode->next;
            fast = fast->next->next;
        }
        ListNode* left = head;
        ListNode* right = midnode->next;
        midnode->next  = nullptr;

        ListNode*pre = nullptr;
        ListNode*cur = right;
        while(cur != nullptr){
            ListNode* node = cur->next;
            cur->next = pre;
            pre = cur;
            cur = node;
        }
        right = pre;

        //ListNode* res = left;
        while(left->next != nullptr && right!=nullptr){
            ListNode* nextnode = left->next;
            left->next = right;
            right= right->next;
            left->next->next = nextnode;
            left=left->next->next;
        }
       // return res;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5712056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存