1. 题目

编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。

示例:
输入: head = 3->5->8->5->10->2->1, x = 5
输出: 3->1->2->10->5->5->8

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/partition-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 题目意思:将小于x的节点放在x前部
  • partTail是满足上面要求的部分的尾巴
  • 建立空头节点哨兵,用head遍历,prev记录前置节点
class Solution {public:ListNode* partition(ListNode* head, int x) {ListNode *emptyHead = new ListNode(-1), *prev, *partTail;emptyHead->next = head;partTail = prev = emptyHead;while(head){if(head->val < x && partTail != prev)//注意第二个条件{prev->next = prev->next->next;//把head断开head->next = partTail->next;//head接入小于x的段partTail->next = head;//head接上前段尾巴partTail = partTail->next;//更新尾巴,这句也可以不要//不要的话,就是partTail其实是头,不变,一直往头上插入节点head = prev->next;//更新head}else    //其他情况直接后移{prev = head;head = head->next;}}return emptyHead->next;}
};

程序员面试金典 - 面试题 02.04. 分割链表相关推荐

  1. 编写函数判断一个数是否是回文数_程序员面试金典 - 面试题 01.04. 回文排列

    题目难度: 简单 原题链接 题目描述 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一. 回文串是指正反两个方向都一样的单词或短语.排列是指字母的重新排列. 回文串不一定是字典当中的单词. ...

  2. 程序员面试金典 - 面试题 16.04. 井字游戏(计数)

    1. 题目 设计一个算法,判断玩家是否赢了井字游戏.输入是一个 N x N 的数组棋盘,由字符" ","X"和"O"组成,其中字符" ...

  3. 程序员面试金典 - 面试题 05.04. 下一个数(线性扫描)

    文章目录 1. 题目 2. 解题 2.1 STL 2.2 线性扫描 2.3 位运算 1. 题目 下一个数.给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小) ...

  4. 程序员面试金典 - 面试题 17.04. 消失的数字(数学/位运算)

    1. 题目 数组 nums 包含从0到n的所有整数,但其中缺了一个. 请编写代码找出那个缺失的整数.你有办法在O(n)时间内完成吗? 注意:本题相对书上原题稍作改动 示例 1: 输入:[3,0,1] ...

  5. 程序员面试金典 - 面试题 02.05. 链表求和

    1. 题目 给定两个用链表表示的整数,每个节点包含一个数位. 这些数位是反向存放的,也就是个位排在链表首部. 编写函数对这两个整数求和,并用链表形式返回结果. 示例: 输入:(7 -> 1 -& ...

  6. 程序员面试金典 - 面试题 02.08. 环路检测(快慢指针)

    1. 题目 给定一个有环链表,实现一个算法返回环路的开头节点. 有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路. 示例 1: 输入:head = [3,2 ...

  7. 程序员面试金典 - 面试题 02.06. 回文链表(快慢指针+链表反转)

    1. 题目 编写一个函数,检查输入的链表是否是回文的. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你 ...

  8. 程序员面试金典 - 面试题 02.03. 删除中间节点

    1. 题目 实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点. 示例: 输入:单向链表a->b->c->d->e-& ...

  9. 程序员面试金典 - 面试题 02.01. 移除重复节点(哈希set)

    1. 题目 编写代码,移除未排序链表中的重复节点.保留最开始出现的节点. 示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[ ...

最新文章

  1. 服务发现对比:Zookeeper vs. etcd vs. Consul
  2. 优化方法的基本认识 overview
  3. Java黑皮书课后题第7章:*7.33(文化:中国生肖)使用一个字符串数组存储动物名称来简化程序清单3-9的程序
  4. 1-3 交换变量(算法竞赛入门经典)
  5. 【opencv学习】RANSAC算法在图像拼接中的应用实战
  6. RocketMQ消息存储原理
  7. vb6 判断打印机是否有效_针式打印机,常见小问题,这里看一看,或许能帮你...
  8. 【操作基本数据类型的流】
  9. 2021年5月CCAA注册审核员考试认证通用基础真题
  10. html写手机登录界面,使用HTML做手机端的登录界面
  11. ResNet 网络结构与残差连接介绍
  12. idea类和方法注释模板配置
  13. am3352 软时钟老是漂移 rx-8025时钟 rx-8025SA时钟
  14. 在领导面前吃不开的4种员工,中一条就别指望提拔了,说的真准
  15. css能不能实现剪切蒙版,CSS中图形剪切、遮罩功能-及使用说明
  16. 系统服务(daemon)
  17. 倪光南回应方舟CPU失败论,企业失败不等于技术失败
  18. 巨多的笑话,让心情放飞一下吧..
  19. telegram群组管理机器人
  20. java写的家谱_关于java:家谱计划的逻辑

热门文章

  1. golang switch_为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?
  2. va_list va_start va_end的使用
  3. [转]Angular2 Material2 封装组件 —— confirmDialog确定框
  4. 微信小程序继续入坑指南
  5. vue项目导入外部css样式和js文件
  6. 腾讯云挂在和格式化数据盘
  7. HDU-3729 二分匹配 匈牙利算法
  8. Core Location :⽤用于地理定位
  9. 黑马程序员---面向对象笔记总结
  10. 25 To Life