每天一道LeetCode-----将链表中满足条件的节点移动到前面
来源:互联网 发布:mysql use index 编辑:程序博客网 时间:2024/05/16 17:01
Partition List
原题链接Partition List
重组链表,将所有小于给定值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) { /* 作为两个链表的表头,避免表头为空以及为表头赋值的情况 */ ListNode* lessHeader = new ListNode(-1); ListNode* moreHeader = new ListNode(-1); /* 从表头开始 */ ListNode* lessCur = lessHeader; ListNode* moreCur = moreHeader; ListNode* cur = head; while(cur) { /* 将当前节点连接在大于等于x的链表上 */ if(cur->val >= x) { moreCur->next = cur; moreCur = cur; cur = cur->next; moreCur->next = nullptr; } /* 连接到小于x的链表上 */ else { lessCur->next = cur; lessCur = cur; cur = cur->next; lessCur->next = nullptr; } } lessCur->next = moreHeader->next; head = lessHeader->next; delete lessHeader; delete moreHeader; return head; }};
根据题意,本题要求将链表分成两部分,一部分是大于x的节点,另一部分是大于等于x的节点,所以只需要分别构成一个链表最后连接在一起即可。类似的题目都可以利用这种方法求解
阅读全文
0 0
- 每天一道LeetCode-----将链表中满足条件的节点移动到前面
- 每天一道LeetCode-----删除序列中指定元素,将满足要求的元素移动到前面
- 每天一道LeetCode-----将数组/链表后k个元素移动到前面
- 每天一道LeetCode-----将链表每k个节点逆序一次
- 找出二叉排序树中满足某一条件的节点
- 满足超级移动工作者需要的4个关键条件
- 每天一道LeetCode-----二叉搜索树的某两个节点被交换位置,修正这个二叉搜索树
- 满足条件的整数
- 满足条件的整数
- 满足条件的n
- 缓存满足的条件
- 每天一道LeetCode-----删除链表倒数第n个节点
- 每天一道LeetCode-----移除有序链表中的重复节点
- 每天一道LeetCode-----字符串乘法
- 每天一道LeetCode-----括号匹配
- 每天一道LeetCode-----数独盘求解
- 每天一道LeetCode-----生命游戏
- 每天学习一算法系列(1)(定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部)
- ROS机器人程序设计(原书第二版)笔记
- Spring Boot 拦截器 请求参数MD5签名校验
- 图解设计模式
- string转化成int
- JavaScript 实用技巧和写法建议
- 每天一道LeetCode-----将链表中满足条件的节点移动到前面
- 系统负载能力浅析
- 515. Find Largest Value in Each Tree Row
- 成为 Linux 终端高手的七种武器
- 亲自动手写一个Python库(一)
- spring整合hibernate的时候使用session的时候报:is not valid without active transaction
- 原生js实现addClass,removeClass,hasClass方法
- JVM内存模型
- SQL常用增删改查语句