zoukankan      html  css  js  c++  java
  • #Leetcode# 143. Reorder List

    https://leetcode.com/problems/reorder-list/

    Given a singly linked list LL0→L1→…→Ln-1→Ln,
    reorder it to: L0→LnL1→Ln-1→L2→Ln-2→…

    You may not modify the values in the list's nodes, only nodes itself may be changed.

    Example 1:

    Given 1->2->3->4, reorder it to 1->4->2->3.

    Example 2:

    Given 1->2->3->4->5, reorder it to 1->5->2->4->3.

    代码:

    /**
     * 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 || !head -> next || !head -> next -> next) return ;
            ListNode *slow = head; ListNode *fast = head;
            while(fast -> next && fast -> next -> next) {
                slow = slow -> next;
                fast = fast -> next -> next;
            }
            
            ListNode *dummy = slow -> next;
            slow -> next = NULL;
    
            dummy = reverseList(dummy);
            
            while(head && dummy) {
                ListNode *New = head -> next;
                head -> next = dummy;
                dummy = dummy -> next;
                head -> next -> next = New;
                head = New;
            }
        }
        
        ListNode *reverseList(ListNode *head) {
            if(!head || !head -> next) return head;
            ListNode *New = reverseList(head -> next);
            head -> next -> next = head;
            head -> next = NULL;
            return New;
        }
    };
    

      快慢指针把链表从中间分开然后反转链表 之后把两个链表合并 希望今天出门剪头发之前 Leetcode 刷到 200

     

  • 相关阅读:
    旋转数组求最小值
    docker
    php爬虫
    docker,docker-compose 安装
    ReactPHP
    Workerman了解一下
    ubantu 运行.sh 脚本的问题
    ubantu 文件权限 Permission denied
    ubantu 文件属性
    mysql命令行中执行sql的几种方式总结
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/10406961.html
Copyright © 2011-2022 走看看