Reorder List
来源:互联网 发布:凤凰于飞 知乎 编辑:程序博客网 时间:2024/04/29 18:17
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}.
class Solution {public: void reorderList(ListNode* head) { ListNode *second_head=findhalf(head); ListNode *reverse_head=reverse(second_head); ListNode *late; while(reverse_head){ late=reverse_head->next; reverse_head->next=head->next; head->next=reverse_head; head=head->next->next; reverse_head=late; } } ListNode* findhalf(ListNode * head){ if(!head) return NULL; ListNode *fast=head,*slow=head; while(fast&&fast->next){ slow=slow->next; fast=fast->next->next; } ListNode* second_head=slow->next;//注这里不能返回slow slow->next=NULL;//要加这句,不然原head就还是长长的一条 return second_head; } ListNode * reverse(ListNode *head){ if(!head) return NULL; ListNode*pre=new ListNode(-1); pre->next=head; while(head->next){ ListNode *p=head->next; head->next=p->next; p->next=pre->next; pre->next=p; } return pre->next; }};
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
- xhprof windows下安装和使用(windows版本)
- java学习笔记————本质篇2
- linux下文件时间戳
- 多线程 CreateThread与_beginthreadex本质区别
- Matlab中gradient函数的使用方法
- Reorder List
- java int short long float double 大整理(不要错过) ,
- inet_pton()和inet_ntop()函数详解
- Vmtools安装不成功的解决办法
- 发现一个python的第三方包
- 安装Wamp3.x遇到的问题总结
- “无法识别的配置节system.webServer”解决办法
- POSTman chrome插件使用学习记录
- vim 跳转指定行