题解 | #重排链表#

重排链表

http://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b

 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    void reorderList(ListNode *head) {
        // 找后半段节点的 头结点
        if(head == NULL ) return ;
        ListNode* node = new ListNode(-1);
        node->next = head;
        ListNode* node2 = node;
        while(node2->next){
            node = node->next;
            node2 = node2->next;
            if(node2->next){
                node2 = node2->next;
            }
        }
        
        ListNode* pre = new ListNode(-1);
        ListNode* tar = node->next;
        node->next = NULL;
        // tou cha 
        while(tar){
            ListNode* next =tar->next;
            tar->next = pre->next;
            pre->next = tar;
            tar = next;
        }
        ListNode* dummary = head;
        // 按次插入
        //1 2 3 4 5
        // 1 3 5 / 4 2
        // 1 4 3 2 5
        while(dummary && pre->next){
            ListNode* tmp = pre->next;
            pre->next = tmp->next;
            tmp->next = dummary->next;
            dummary->next = tmp;
            dummary = tmp->next;
        }
        return ;
        
        
       
    }
};
全部评论

相关推荐

昨天 12:29
门头沟学院 Java
后端岗,实习三周感觉有点想跑路了,担心秋招被拉黑,有没有佬是字节HR知道情况的
从零开始的转码生活:你实习三周都想跑路,将来拿到offer真的愿意在这干十几二十年吗
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 13:15
点赞 评论 收藏
分享
Twilight_m...:经典我朋友XXXX起手,这是那种经典的不知道目前行情搁那儿胡编乱造瞎指导的中年人,不用理这种**
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:22
怎么这么多逆天求职者,救救我救救我救救我😭
flmz_Kk:哈哈哈哈哈哈,这么多求职者,肯定有那一两个逆天的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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