Odd Even Linked List
2016-01-18 16:26
120 查看
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
Example:
Given
return
一个指针记录奇数的结尾,一个指针记录偶数的开头,一个指针记录偶数的末尾。
奇数的结尾的next,指向偶数的开头,偶数的结尾的next是下一个奇数,奇数的next是下一个偶数
You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
Example:
Given
1->2->3->4->5->NULL,
return
1->3->5->2->4->NULL.
一个指针记录奇数的结尾,一个指针记录偶数的开头,一个指针记录偶数的末尾。
奇数的结尾的next,指向偶数的开头,偶数的结尾的next是下一个奇数,奇数的next是下一个偶数
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode oddEvenList(ListNode head) { if (head == null || head.next == null || head.next.next == null) { return head; } ListNode p = head.next; ListNode oddTail = head; ListNode evenHead = head.next; ListNode preEven; while (true) { if (p.next == null) { break; } preEven = p; p = p.next; oddTail.next = p; ListNode nextEven = p.next; oddTail = p; p.next = evenHead; preEven.next = nextEven; p = nextEven; if (p == null) { break; } } return head; } }
相关文章推荐
- Oracle 递归查询
- 浅析Mysql Join语法以及性能优化
- 【OMNet++】tictoc示例四
- 如何挽留离职员工
- hadoop eclipse 开发环境搭建
- composer api 参考
- Nginx查看nginx.conf路径
- 硬盘分区表知识――详解硬盘MBR
- js回调函数(callback)
- python 升级安装新版本及readline
- 常用的个人网站建站系统
- GCD下 timer
- protobuf序列化存储
- MyBatis Generator配置文件翻译
- 提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
- ML的DOM解析 Java实现 使用递归解析一个XML文档
- Git 常用命令速查表(图文+表格)
- 管理小结(三)如何检查员工工作2——利用tower工具
- 关于烂代码的那些事(中)
- 1.解构Hello Objective-C程序