给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

示例:

输入: head = 1->4->3->2->5->2, x = 3
    输出: 1->2->2->4->3->5

 /**
* 列表定义
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/

解法:

 class Solution {
public ListNode partition(ListNode head, int x) {
if(head == null || head.next == null) {
return head;
} ListNode bigDump = new ListNode(0);
ListNode smallDump = new ListNode(0);
ListNode big = bigDump;
ListNode small = smallDump;
while(head != null) {
if (head.val >= x) {
big.next = head;
big = big.next;
} else {
small.next = head;
small = small.next;
}
head = head.next;
}
big.next = null;
small.next = bigDump.next;
return smallDump.next;
}
}

说明:使用双指针的方式,分别记录小于、大于等于的列表部分。然后在将其拼接起来。

注意:需要创建两个临时变量来存储两个新列表的头部地址

最新文章

  1. 使用echarts开发电子屏数据展示页面
  2. C++Builder 笔记
  3. U1 - A 留在电脑里的字体
  4. 【AngularJs】---表单验证
  5. 第二周:01 ICP迭代交互
  6. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏
  7. akka
  8. pyqt托盘例子
  9. centos下修改hostname,ip,netmask,gateway,dns
  10. gulp learning note
  11. 信号处理引发的cpu高
  12. 使用 whistle 替代本地 nginx/webpack 服务
  13. 解析.NET对象的跨应用程序域访问(上篇)
  14. shareSdk分享图片
  15. C#实现RSA加密与解密、签名与认证(转)
  16. LOJ.6062.[2017山东一轮集训]Pair(Hall定理 线段树)
  17. (转) Read-through: Wasserstein GAN
  18. JS压缩工具配置
  19. Andrew Ng-ML-第八章-正则化
  20. 软工1816 · Alpha冲刺(8/10)

热门文章

  1. Jq如何获取并操作iframe中的元素?
  2. python 可变数据类型 和 不可变数据类型
  3. ddl语法
  4. jira中使用eazyBI
  5. Python: ImportRequestsError: No module named 'requests'解决方法
  6. PHP设计模式 - 门面模式
  7. ubuntu18.04LTS服务器安装matlab4a
  8. python三大器之装饰器的练习
  9. python学习-69 包装和授权
  10. PB 报表数值列加%