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
相关推荐
plainGeekDev13 分钟前
GreenDAO → Room得物技术33 分钟前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理AI小老六4 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent胡萝卜术5 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?亦暖筑序5 小时前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流Asize5 小时前
初识DFS 与 BFS:递归、队列与图遍历敲代码的彭于晏6 小时前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制plainGeekDev7 小时前
ButterKnife → ViewBinding罗西的思考19 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架美团技术团队1 天前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆