面试算法-87-分隔链表

题目

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你应当 保留 两个分区中每个节点的初始相对位置。

示例 1:

输入:head = [1,4,3,2,5,2], x = 3

输出:[1,2,2,4,3,5]

java 复制代码
class Solution {
    public ListNode partition(ListNode head, int x) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;

        ListNode p1 = dummy;
        ListNode p2 = dummy;
        ListNode p3 = null;
        while (p2 != null) {
            p3 = p2.next;
            if (p3 != null && p3.val < x) {
                if(p1.next == p3){
                    p2 = p3;
                    p1 = p2; 
                }else{
                    p2.next = p3.next;

                    ListNode temp = p1.next;
                    p1.next = p3;
                    p3.next = temp;

                    p1 = p1.next;
                }
            }else{
                p2 = p3;
            }

        }
        return dummy.next;
    }
}
相关推荐
.柒宇.10 分钟前
力扣hot100之最大子数组和(Java版)
数据结构·算法·leetcode
Ruihong12 分钟前
你的 Vue 3 defineProps(),VuReact 会编译成什么样的 React?
vue.js·react.js·面试
前端摸鱼匠13 分钟前
【AI大模型春招面试题21】什么是Transformer的“预归一化”与“后归一化”?两者的差异及影响?
人工智能·深度学习·面试·大模型·transformer·求职招聘
黎阳之光18 分钟前
非视距·自愈·广覆盖|黎阳之光1.4&5.8GHz宽带自愈网无线基站,重构工业级无线通信
大数据·人工智能·算法·安全·数字孪生
llilian_1625 分钟前
铷原子频率标准 以时频基准破局,为计量校准赋能 时基铷钟
网络·功能测试·单片机·嵌入式硬件·测试工具·算法
6Hzlia29 分钟前
【Hot 100 刷题计划】 LeetCode 131. 分割回文串 | C++ 回溯算法基础切割法
c++·算法·leetcode
美式请加冰33 分钟前
子序列问题
数据结构·算法·leetcode
DeniuHe35 分钟前
线性回归与逻辑回归:同为凸函数,为何一个有解析解、一个没有?
算法·机器学习·逻辑回归
披着羊皮不是狼39 分钟前
基于CNN的图像检测算法
人工智能·算法·cnn
程序员小崔日记39 分钟前
我参加了第十七届蓝桥杯 Java B 组省赛,这套题你能撑到第几题?
java·算法·蓝桥杯大赛