Partition List
2015-09-24 15:12
246 查看
题目:Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
Given1->4->3->2->5->2and x =
3,
return
1->2->2->4->3->5.
思路:从前往后。
有一些比较好的技巧,就是新建两个头结点,作为起始端。再设立左右结尾节点。一次判断,不过别忘了,最后节点指向空,不然不能通过。代码:
class Solution { public: ListNode* partition(ListNode* head, int x) { if (head==NULL||head->next==NULL){ return head; } ListNode *left=new ListNode(-1),*right=new ListNode(-1); ListNode *leftTail=left,*rightTail=right; while (head!=NULL){ if (head->val<x){ leftTail->next=head; head=head->next; leftTail=leftTail->next; leftTail->next=NULL; }else{ rightTail->next=head; head=head->next; rightTail=rightTail->next; } } right=right->next; leftTail->next=right; rightTail->next=NULL; return left->next; //最后没有设置链表指向空,所以出错。 } };
相关文章推荐
- 网络请求的get,post 方法,同步,异步请求
- ksh 函数
- Swift控制流
- C# WebBrowser 一些方法
- 使用Eclipse构建Maven的SpringMVC项目
- 待攻城略地的任务
- SSM框架搭建简单实例
- Python--基本文件方法
- JQuery代码优化(累积版)
- windows下搭建flask开发环境
- SpringMVC笔记——SSM框架搭建简单实例
- Jenkins配置:添加用户和管理权限
- Segmentation fault到底是何方妖孽
- sqlite编码问题
- Mac下GBK与UTF8编码文件的批量转换
- Swift Swift语言Storyboard教程:第二部
- C++Bulder之字符数组转换成AnsiString类型
- SQL2008 MSSQLSERVER服务无法启动,报错"17051"怎么解决
- Matlab中libsvm的安装几使用(参数的设置 )
- 检测与分类中的召回率、准确率