重排链表
来源:互联网 发布:数据监控系统毕业设计 编辑:程序博客网 时间:2024/05/24 07:31
题目
给定一个单链表L: L0→L1→…→Ln-1→Ln,
重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→…
必须在不改变节点值的情况下进行原地操作。
样例
给出链表 1->2->3->4->null,重新排列后为1->4->2->3->null。
解题
当程序不会写的时候考虑递归解决
第一个节点head
第二个节点headNext
最后一个节点lastNode
最后一个节点前驱节点lastPrevNode
将第一个节点和最后一个节点链接起来,中间节点递归解决
注意当只有一个节点或者两个节点的时候不做处理
public class Solution { /** * @param head: The head of linked list. * @return: void */ public void reorderList(ListNode head){ if(head==null || head.next==null){ return; } if(head.next.next ==null){ // 当只有两个节点时候也直接返回 return; } ListNode lastNode = head; ListNode lastPrevNode = null; while(lastNode.next!=null){ lastPrevNode = lastNode; lastNode = lastNode.next; } ListNode headNext = head.next; head.next = lastNode; lastPrevNode.next = null; reorderList(headNext); lastNode.next = headNext; }}
0 0
- 重排链表
- 重排链表
- 重排链表
- 重排链表
- LintCode:重排链表
- LintCode : 重排链表
- 重排链表
- 重排链表
- 重排链表-LintCode
- Reorder List 重排链表
- 算法:链表的重排
- Reorder List 链表重排
- L2-022. 重排链表
- lintcode(99)重排链表
- L2-022. 重排链表
- L2-022. 重排链表
- Java实现-重排链表
- L2-022. 重排链表
- ppt中的对象选择和重命名
- android中TextView中文字从数据库中读取并实现换行
- 自定义类,外面调用的属性是只读,但是可以在自定义类内部设置修改属性
- OpenJ_Bailian 4081 树的转换 数据结构
- App安全之网络传输安全
- 重排链表
- HDU 3607 线段树
- Embedded Linux S3C2440 environment setup
- 【VS开发】【智能语音处理】语音信号处理之(四)梅尔频率倒谱系数(MFCC)
- 区间信息维护与查询 2016.10.13
- cocos2dx-3.10 聊天系统实现(C++实现)
- Android调试之使用真机
- 2016.7.14 夏令营 Day7
- 新版微信-微信公众号一键关注解决办法