链表分割
2015-07-09 18:21
316 查看
题目描述
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。
Thinking
如图所示我们建立两个链表一个专门存放小于x的节点,另一个专门存放大于x的节点,访问原链表如果current节点大于x放到qe后面否则放在pe后面最后将两链表合并,返回ps引用即可。(如果ps==nll即原链表数据均大于必须返回qs)
Code
[code]import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Partition { public ListNode partition(ListNode pHead, int x) { ListNode ps=null; ListNode pe=null; ListNode qs=null; ListNode qe=null; ListNode current=pHead; while(current!=null){ ListNode temp= current.next; current.next=null; if(current.val<x){ if(ps==null){ ps=current; pe=current; } else{ pe.next=current; pe=current; } } else{ if(qs==null){ qs=current; qe=current; } else{ qe.next=current; qe=current; } } current=temp; } if(ps==null){ return qs; } pe.next=qs; return ps; } }
相关文章推荐
- Javascript模块化编程(二):AMD规范
- For多重循环 break continue
- Android常见问题解决
- asterisk 外网映射连接不上
- Javascript模块化编程(一):模块的写法
- Android学习之调用Web Service
- BZOJ 4173 数学 数论
- Phpstorm常用快捷键
- iOS内存管理
- configure详解
- 关于软件测试人员能力模型的建立(from知乎)
- ...
- 随机事件
- supervisor用法
- iOS打包时achieve文件无法生成
- SpringAOP 基础详解
- GNU autotools 安装和使用
- HTTP状态码大全
- Guava学习笔记:Guava新增集合类型-Multimap
- yii2.0 集成微信开发,解决微信与网站对接失败情况!