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

    /**

    143. Reorder List

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

    * @param {ListNode} head
    * @return {void} Do not return anything, modify head in-place instead.
    */

    var reorderList = function (head) {
      if (head==null || head.next==null)
        return;
      //1.find the middle of list
      let middle = findMiddle(head);
      let secondHead = middle.next;
      
      middle.next = null;//断开中点和后一段
      //2.reserve it
      let reverseSecondHead = reverseLinkedList(secondHead);
      //3.merge two list by items one by one
      return mergeLinkedList(head,reverseSecondHead);
    };

    var findMiddle = function (head) {
      let slow = head, fast = head;
      while (fast != null && fast.next != null) {
        slow = slow.next;
        fast = fast.next.next;
      }
      return slow;
    };

    var reverseLinkedList = function (head) {
      let prev = null;
      let next = null;
      let current = head;
      while (current != null) {
        next = current.next;
        current.next = prev;//point to prve
        prev = current;
        current = next;
      }
      return prev;
    };

    var mergeLinkedList = function (node1,node2) {
      //将第二个链表的元素间隔地插入第一个链表中
      let cur = node1;
      while (node2!=null){
        let temp = node2.next;
        node2.next = cur.next;
        cur.next = node2;
        cur = cur.next.next;
        node2 = temp;
      }
    };

  • 相关阅读:
    ntohs, ntohl, htons,htonl的比较和详解【转】
    Device Tree 详解【转】
    浅析Linux DeviceTree【转】
    【spring boot】spring boot 拦截器
    【jQuery】jQuery/js 判断字符串是否JSON字符串
    【java】java中的 &= 和 |= 和 ^= 的区别
    zabbix创建触发器、action,发送报警邮件
    html iframe禁用右键
    mysql数据库mysqldump方式备份
    JDK8新特性
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/10204388.html
Copyright © 2011-2022 走看看