class Solution {
public ListNode partition(ListNode head, int x) {
// 初始化两个链表的头节点和尾节点,分别用于存储小于x和大于等于x的节点
ListNode leftHead = null, leftTail = null;
ListNode rightHead = null, rightTail = null;
// 临时变量,用于遍历原链表
ListNode next = null;
// 遍历原链表
while (head != null) {
// 保存当前节点的下一个节点
next = head.next;
// 断开当前节点与原链表的联系
head.next = null;
// 判断当前节点的值是否小于x
if(head.val < x) {
// 如果leftHead为空,说明这是第一个小于x的节点,将其设置为leftHead
if(leftHead == null) {
leftHead = head;
}else{
// 否则将当前节点添加到leftTail后面
leftTail.next = head;
}
// 更新leftTail为当前节点
leftTail = head;
}else {
// 如果rightHead为空,说明这是第一个大于等于x的节点,将其设置为rightHead
if(rightHead == null) {
rightHead = head;
}else{
// 否则将当前节点添加到rightTail后面
rightTail.next = head;
}
// 更新rightTail为当前节点
rightTail = head;
}
// 移动到下一个节点
head = next;
}
// 如果leftHead为空,说明所有节点都大于等于x,直接返回rightHead
if (leftHead == null) {
return rightHead;
}
// 将leftTail与rightHead连接起来,形成新的链表
leftTail.next = rightHead;
// 返回新链表的头节点
return leftHead;
}
}
力扣86.分割链表
听风客12024-09-06 20:34
相关推荐
WolfGang00732115 分钟前
代码随想录算法训练营Day27 | 56.合并区间、738.单调递增的数字、968.监控二叉树雨中飘荡的记忆33 分钟前
Java + Groovy计费引擎详解嘟嘟w33 分钟前
JVM(Java 虚拟机):核心原理、内存模型与调优实践合作小小程序员小小店33 分钟前
web开发,在线%药店管理%系统,基于Idea,html,css,jQuery,java,ssm,mysql。ZHE|张恒34 分钟前
设计模式(八)组合模式 — 以树结构统一管理对象层级TDengine (老段)37 分钟前
TDengine 转换函数 CAST 用户手册爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ41 分钟前
java实现校验sql中,表字段在表里是否都存在,不存在的给删除掉信奥卷王1 小时前
2025年9月GESPC++三级真题解析(含视频)努力学习的小廉1 小时前
我爱学算法之—— BFS之FLoodFill算法编程火箭车1 小时前
【Java SE 基础学习打卡】15 分隔符、标识符与关键字