LeetCode Partition List(链表分段)
2016-06-13 15:21
239 查看
题意:给出一个单链表,有参数的数x。将比x小的数排在比x大的数据后面
思路:类似于快速排序的分段处理。为了简单操作,在单链表前加个头结点。注意,在处理时,如果当前处理结点与被替换结点为同一结点结,两个都下移,否则会出现环
代码如下:
class Solution
{
public ListNode partition(ListNode head, int x)
{
if (null == head || null == head.next) return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = dummy, cur = dummy;
while (cur != null && cur.next != null)
{
if (cur.next.val < x)
{
if (cur == p)
{
p = p.next;
cur = cur.next;
continue;
}
ListNode tmp = cur.next;
ListNode next = p.next;
cur.next = cur.next.next;
p.next = tmp;
tmp.next = next;
p = p.next;
continue;
}
cur = cur.next;
}
return dummy.next;
}
}
思路:类似于快速排序的分段处理。为了简单操作,在单链表前加个头结点。注意,在处理时,如果当前处理结点与被替换结点为同一结点结,两个都下移,否则会出现环
代码如下:
class Solution
{
public ListNode partition(ListNode head, int x)
{
if (null == head || null == head.next) return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode p = dummy, cur = dummy;
while (cur != null && cur.next != null)
{
if (cur.next.val < x)
{
if (cur == p)
{
p = p.next;
cur = cur.next;
continue;
}
ListNode tmp = cur.next;
ListNode next = p.next;
cur.next = cur.next.next;
p.next = tmp;
tmp.next = next;
p = p.next;
continue;
}
cur = cur.next;
}
return dummy.next;
}
}
相关文章推荐
- 一尺、一英尺、一寸和一英寸分别等于多少厘米?
- Spring SimpleJdbcInsert
- java中比较两个日期Date的大小
- 指向学生的指针
- hasOwnProperty()
- python 计算器的(正则匹配+递归)
- CSS vs JS动画:谁更快?
- 转载:dos批处理中路径获取
- laravel5.0在linux环境下解决.htaccess无效和去除index.php
- Java 集合类详解
- nginx.conf配置详解
- HDU 单词总数
- CSS 中文字体表达方式
- Android开发教程之初识Android App
- Linux学习笔记(2)
- Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)
- 第16周项目-小玩文件(统计个数)
- 使用Dom的Range对象处理chrome和IE文本光标位置
- JetBrains IntelliJ IDEA for Mac 15.0 破解版 – Mac 上强大的 Java 集成开发工具
- 机器学习笔记:神经网络