【Leetcode】Reorder List
来源:互联网 发布:蹭网器密码破解软件 编辑:程序博客网 时间:2024/06/06 02:51
【题目】
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}
, reorder it to {1,4,2,3}
.
【思路】
三步走
1.找到中间点
2.从中间到最后的reverse
3.插值
【代码】
public class Solution { public void reorderList(ListNode head) { if(head==null||head.next==null) return; //Find the middle of the list ListNode p1=head; ListNode p2=head; while(p2.next!=null&&p2.next.next!=null){ p1=p1.next; p2=p2.next.next; } //Reverse the half after middle 1->2->3->4->5->6 to 1->2->3->6->5->4 ListNode preMiddle=p1; ListNode preCurrent=p1.next; while(preCurrent.next!=null){ ListNode current=preCurrent.next; preCurrent.next=current.next; current.next=preMiddle.next; preMiddle.next=current; } //Start reorder one by one 1->2->3->6->5->4 to 1->6->2->5->3->4 p1=head; p2=preMiddle.next; while(p1!=preMiddle){ preMiddle.next=p2.next; p2.next=p1.next; p1.next=p2; p1=p2.next; p2=preMiddle.next; } }}
0 0
- [leetcode][list] Reorder List
- [leetcode][list] Reorder List
- Leetcode: Reorder List
- [LeetCode] Reorder List
- LeetCode题解:Reorder List
- Leetcode: Reorder List
- LeetCode:Reorder List
- leetcode之Reorder List
- Leetcode: Reorder List
- [LeetCode]Reorder List
- [LeetCode] Reorder List
- leetcode Reorder List
- LeetCode | Reorder List
- LeetCode Reorder List
- LeetCode 之 Reorder List
- Leetcode: Reorder List
- LeetCode OJ:Reorder List
- Reorder List (LeetCode)
- 【八校联考2013】百团大战
- iOS UI04_Touch
- HDOJ Square Coins 1398【母函数】
- iOS应用内置付费In-App Purchases入门
- 设计模式之装饰模式
- 【Leetcode】Reorder List
- C++11 标准新特性: 右值引用与转移语义
- 76. Minimum Window Substring
- POJ 2262 Goldbach's Conjecture (求解素数的一般筛和线性筛)
- node在windows下node-gyp编译可能会出现的问题
- SharedPreferences
- 【Android优化】最强ListView优化方案
- 老程序员的忠告(转)
- Linux 虚拟机 快捷键