Reorder List
2014-01-27 08:33
441 查看
Reorder List
Total Accepted: 4553 TotalSubmissions: 24580My Submissions
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}.
solution:
先对分,然后把后半部分 reverse, 接着挨个插入前半部分
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public void reorderList(ListNode head) {
if(head == null) return;
ListNode slow = head, fast = head.next;
while(fast!=null && fast.next!=null){
slow = slow.next;
fast = fast.next.next;
}
ListNode mid = slow.next;
slow.next = null;
mid = reverseList(mid,null);
while(head!=null && mid!=null){
ListNode nextMid = mid.next;
mid.next = head.next;
head.next = mid;
head = head.next.next;
mid = nextMid;
}
}
private ListNode reverseList(ListNode head, ListNode pre){
if(head == null) return pre;
ListNode temp = head.next;
head.next = pre;
return reverseList(temp, head);
}
}
相关文章推荐
- LeetCode :: Reorder List
- Reorder List
- LeetCode题解–143. Reorder List
- Leetcode之reorder-list
- LeetCode Reorder List
- 【LeeCode】Reorder List 重排链表 4000
- ReorderList 的使用
- leetcode-Reorder List-143
- Reorder List
- Reorder List
- leetcode笔记:Reorder List
- Reorder List
- leetcode之reorder-list
- Reorder List
- Reorder List -- LeetCode
- [leetcode] Reorder List
- Leetcode--Reorder List
- leetcode--Reorder List
- 【LEETCODE OJ】Reorder List
- 【LeetCode】Reorder List