博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
143. Reorder List
阅读量:6036 次
发布时间:2019-06-20

本文共 1725 字,大约阅读时间需要 5 分钟。

Given a singly linked list L: L0→L1→…→Ln-1→Ln,

reorder it to: L0→Ln→L1→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.

难度:medium

题目:给定一单链表 L: L0→L1→…→Ln-1→Ln, 重新排序为: L0→Ln→L1→Ln-1→L2→Ln-2→…

思路:先使用快慢指针一个一次走一步,另一个一次走两步,找出中间点。再使用头插法处理后半段,最后合并两链表。

Runtime: 2 ms, faster than 99.27% of Java online submissions for Reorder List.

Memory Usage: 40.4 MB, less than 100.00% of Java online submissions for Reorder List.

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public void reorderList(ListNode head) {        if (null == head) {            return;        }        ListNode oneStepPtr = head, twoStepsPtr = head, midPtr = oneStepPtr;        while (twoStepsPtr != null) {            midPtr = oneStepPtr;            oneStepPtr = oneStepPtr.next;            twoStepsPtr = (null == twoStepsPtr.next) ? null : twoStepsPtr.next.next;        }        midPtr.next = null;        ListNode dummyHead = new ListNode(0), node = null;        while (oneStepPtr != null) {            node = oneStepPtr;            oneStepPtr = oneStepPtr.next;                        node.next = dummyHead.next;            dummyHead.next = node;        }        ListNode ptr = head;        dummyHead = dummyHead.next;        while (ptr != null && dummyHead != null) {            node = ptr;            ptr = ptr.next;            ListNode qNode = dummyHead;            dummyHead = dummyHead.next;                        qNode.next = ptr;            node.next = qNode;        }    }}

转载地址:http://gilhx.baihongyu.com/

你可能感兴趣的文章
了解互联网活动咨讯
查看>>
linux usb安装介质制作 create-a-usb-stick-on-windows
查看>>
Oracle查前几条记录方法
查看>>
使用delphi 开发 web(一) webbroke 简介
查看>>
移动终端网页游戏移植研发框架【客户端战斗系统】
查看>>
Hammock for REST
查看>>
修正 THashedStringList 在插入和 PutObject 时的速度缺陷
查看>>
线程间通信
查看>>
Mysql存储引擎
查看>>
HDU-4318 Power transmission 模型转化
查看>>
asp.net实现视频在线播放
查看>>
理解 JavaScript 闭包
查看>>
Eclipse中如何更改字体大小?
查看>>
Java学习笔记(7)——输入输出
查看>>
wcf 基础教程 契约 Contract 数据契约DataContract序列化前身 XmlSerializer xml序列化
查看>>
mysql主从备份、主从切换
查看>>
Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can't find referenced class问题的解决方案...
查看>>
每日英语:China Seeks to Calm Anxiety Over Rice
查看>>
C++中struct和class的区别 [转]
查看>>
C++ ofstream和ifstream详细用法
查看>>