题目链接:https://leetcode.com/problems/partition-list/description/

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.

You should preserve the original relative order of the nodes in each of the two partitions.

Example:

Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5

思路:

  • 根据题目所述,要求将链表中小于x(< x )的结点放在链表的左侧,大于等于x(>= x)的结点放置在链表的右侧;并且要求元素的相对顺序保持不变。
  • 最直观的想法就是遍历链表,将元素中大于等于x(>= x)的结点拎出来,组成一个新的链表;当对原始链表遍历完成后,将拎出来的新链表插入到处理后的原始链表的后面即可。

  注意:上面描述的是将大于等于x(>= x)的结点拎出来,也可将小于x(< x)的结点拎出来,两者处理过程基本一样。只是组合成所求链表时插入位置不同。

编码如下

 /**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
if (head == nullptr) return head; // 链表为空,则直接返回 // 操作原始链表的准备工作
// 包括创建一个辅助结点指向链表的头结点
ListNode *pHead = new ListNode(-);
pHead->next = head;
ListNode *pre = pHead; // pre指向遍历到的结点的前驱结点
ListNode *cur = head; // cur指向遍历到的当前结点(即待处理结点) // 创建指向大于等于x(>= x ) 结点的链表
// 用pNew指针指向该链表的头结点,pNew为辅助结点
ListNode *pNew = new ListNode(-);
ListNode *ptrNew = pNew; // 对原始链表进行遍历
while (cur != nullptr)
{
if (cur->val >= x) // 将原始链表中大于等于x(>= x)的结点分离出来,形成新的链表
{
ListNode *pTemp = cur;
pre->next = pTemp->next;
cur = cur->next; ptrNew->next = pTemp;
ptrNew = ptrNew->next;
ptrNew->next = nullptr;
}
else // 对于原始链表中小于x(< x)的结点,移动指针指向即可。
{
pre = cur;
cur = cur->next;
}
} // 将两部分连接起来
// 将原始链表中小于x(< x)的部分和原始链表中大于等于x(>= x)的部分连接起来
pre->next = pNew->next;
head = pHead->next; // 释放辅助结点内存空间
delete pHead;
delete pNew; return head;
}
};

086. Partition List的更多相关文章

  1. [LeetCode]题解(python):086 - Partition List

    题目来源 https://leetcode.com/problems/partition-list/ Given a linked list and a value x, partition it s ...

  2. 086 Partition List 分隔链表

    给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前.你应当保留两个分区中每个节点的初始相对位置.例如,给定1->4->3->2-&g ...

  3. Partition:增加分区

    在关系型 DB中,分区表经常使用DateKey(int 数据类型)作为Partition Column,每个月的数据填充到同一个Partition中,由于在Fore-End呈现的报表大多数是基于Mon ...

  4. Partition:Partiton Scheme是否指定Next Used?

    在SQL Server中,为Partition Scheme多次指定Next Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next Used,建议,在执行P ...

  5. Partition:分区切换(Switch)

    在SQL Server中,对超级大表做数据归档,使用select和delete命令是十分耗费CPU时间和Disk空间的,SQL Server必须记录相应数量的事务日志,而使用switch操作归档分区表 ...

  6. sql 分组取最新的数据sqlserver巧用row_number和partition by分组取top数据

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...

  7. Oracle Partition Outer Join 稠化报表

    partition outer join实现将稀疏数据转为稠密数据,举例: with t as (select deptno, job, sum(sal) sum_sal from emp group ...

  8. SQLServer中Partition By 函数的使用

    今天群里看到一个问题,在这里概述下:查询出不同分类下的最新记录.一看这不是很简单的么,要分类那就用Group By;要最新记录就用Order By呗.然后在自己的表中试着做出来: 首先呢我把表中的数据 ...

  9. [LeetCode] Partition Equal Subset Sum 相同子集和分割

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

随机推荐

  1. HttpRunner完整笔记(从搭建到应用)

    一.安装 (1)       直接python2 –m pip install HttpRunner,安装完成后,可使用hrun –V 来查看安装版本:python2 pip install -U H ...

  2. vue组件,vue补充和总结,JS循环遍历和加减运算、类型转换补充

    目录 一.vue中的组件 1. 组件的概念 2. 组件分类 3. 组件的特点 4. 组件的定义 5. 组件化 (1)用法和注意 (2)数据组件化实例 6. 组件传参--父传子 (1)用法和注意 (2) ...

  3. 题解 【NOIP2016】组合数问题

    [NOIP2016]组合数问题 Description Input 第一行有两个整数t, k,其中t代表该测试点总共有多少组测试数据,k的意义见[问题描述]. 接下来t行每行两个整数n, m,其中n, ...

  4. Mysql历史版本下载地址

    Mysql历史版本下载地址:http://downloads.mysql.com/archives/community/

  5. vue 手机物理返回键关闭弹框

    1.打开弹窗调用 window.history.pishState() 函数 2.关闭弹框 3.mounted 生命周期 监听popstate 事件 4.beforeDestroy 生命周期 移除po ...

  6. 4、路由事件 RoutedEvent

    路由事件的类型:具体参考https://www.cnblogs.com/jellochen/p/3475754.html Tunnel隧道方式:路由事件使用隧道策略,以便事件实例通过树向下路由(从根到 ...

  7. 关于int指令

    1.关于int指令 格式:int n     n为中断类型码: 作用:     调用n号中断程序:   指令“int n”的执行过程:     1]获取中断类型码n     2]标志寄存器入栈,IF. ...

  8. maven的概念-02

    1.仓库 仓库分为两类:   1)  本地仓库    ->当前电脑上的maven仓库:         本地仓库的默认目录: ${user.home}/.m2/repository        ...

  9. Gym 100971A Treasure Island BFS 思维题

    A - Treasure Island Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  10. luoguP2863 [USACO06JAN]牛的舞会The Cow Prom

    P2863 [USACO06JAN]牛的舞会The Cow Prom 123通过 221提交 题目提供者 洛谷OnlineJudge 标签 USACO 2006 云端 难度 普及+/提高 时空限制 1 ...