[Leetcode 143, Medium] Reorder List
2015-07-26 10:25
501 查看
Problem:
iven 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
Analysis:
Solutions:
C++:
Python:
iven 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}.
Analysis:
Solutions:
C++:
void reorderList(ListNode* head) { if(head == NULL || head->next == NULL || head->next->next == NULL) return; ListNode *fast = head; ListNode *slow = head; while(fast->next != NULL && fast->next->next != NULL) { fast = fast->next; fast = fast->next; slow = slow->next; } ListNode *temp_head = slow->next; slow->next = NULL; ListNode *new_head = NULL; ListNode *p_cur = NULL; while(temp_head != NULL) { ListNode *temp = temp_head->next; if(p_cur == NULL) { new_head = temp_head; p_cur = temp_head; p_cur->next = NULL; } else { new_head = temp_head; temp_head->next = p_cur; p_cur = new_head; } temp_head = temp; } ListNode *r_head = NULL; p_cur = NULL; while(head != NULL) { if(head && head->next == NULL && new_head == NULL) { p_cur->next = head; p_cur->next->next = NULL; break; } ListNode *temp1 = head->next; ListNode *temp2 = new_head->next; if(p_cur == NULL) { r_head = head; r_head->next = new_head; r_head->next->next = NULL; p_cur = r_head->next; } else { p_cur->next = head; p_cur->next->next = new_head; p_cur->next->next->next = NULL; p_cur = p_cur->next->next; } head = temp1; new_head = temp2; } head = r_head; }Java:
Python:
相关文章推荐
- 一起talk C栗子吧(第二十四回:C语言实例--顺序查找)
- BestCoder 1st Anniversary ($) 1002.Hidden String
- 最小生成树(模板 Kruskal)
- 岩手中文离线地图App上线
- HTML--Note6--form
- 华朗新科视频摘要与检索系统-操作手册
- Android中Service(服务)详解
- UVA 201 Squares
- 先论lowbit
- Gray_erosion_subpix.hdev相关例程学习
- 第十章 Call 和 Ret 指令
- [LeetCode]Lowest Common Ancestor of a Binary Tree
- 已知中序遍历序列和后序遍历序列,求先序遍历
- UVA 11987 Almost Union-Find (带权并查集的操作及并查集的删除操作)
- 【攻克Android (11)】适配器视图与适配器
- Eclipse开发Android程序如何在手机上运行
- hdu5304 Eastest Magical Day Seep Group's Summer 状压dp+生成树
- BestCoder 1st Anniversary
- LeetCode(54)(59) Spiral Matrix I II
- 操作系统内存管理之 内部碎片vs外部碎片