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
相关推荐
程序员梅雨2 分钟前
ZooKeeper面经总结Yyyyyy~22 分钟前
【Java】多线程初阶蜗牛互联网23 分钟前
Java 17 调用视觉 Responses API:JSON 约束与人工复核路由Tisfy27 分钟前
LeetCode 2333.最小差值平方和:排序 + 数学计算(不用二分)aqiu11111130 分钟前
【C++算法打怪专栏】LeetCode 217. 存在重复元素(解法总结)SL_staff1 小时前
物模型三要素误用避坑指南:属性、事件、服务的正确建模逻辑一条泥憨鱼1 小时前
【Redis | 黑马点评】短信登录功能 源码深度分析威哥爱编程2 小时前
【AI全栈12-12】Spring Boot 3.x → 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0威哥爱编程2 小时前
【AI全栈12-11】Spring Boot 把 AI 接口真正上线扛量:限流 / 降级 / 可观测小蒜学长2 小时前
基于SpringBoot+uni-app的闪洁家政系统的设计与实现(代码+数据库+LW)