Reorder List
来源:互联网 发布:天下粮仓知乎 编辑:程序博客网 时间:2024/06/03 23:07
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}
.
先用快慢指针找到链表的中点,然后翻转链表后半部分,再和前半部分组合。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: void reorderList(ListNode* head) { if (head == NULL || head->next == NULL) return; ListNode* slow=head,*fast=head; while(fast->next && fast->next->next) { slow=slow->next; fast=fast->next->next; } ListNode* list2=slow->next; slow->next=NULL; ListNode* list1=head; ListNode* cur=list2,*temp=list2->next; cur->next=NULL; while(temp) { ListNode* tem=temp->next; temp->next=cur; cur=temp; temp=tem; } list2=cur; ListNode* Node1=list1,*node2=list2; while(node2) { ListNode* tem1=Node1->next; ListNode* tem2=node2->next; Node1->next=node2; node2->next=tem1; Node1=tem1; node2=tem2; } }};
0 0
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- Reorder List
- POJ 1017 Packets
- TextView实现跑马灯效果
- Android实现推送方式解决方案
- 【笔记】《内核剖析》-02-微型计算机组成结构
- VBA之FormulaR1C1属性
- Reorder List
- net项目发布到IIS上一系列问题汇总
- TI 的 Codec Engine框架简介
- Maven项目,右键-update project后JRE system Library变成eclipse默认的版本
- Java集合源码剖析】Java集合框架
- sys/wait.h
- dev目录介绍
- SDUT 2143 数据结构实验之栈四:括号匹配
- 线性回归笔记