【LeetCode】分隔链表

目录


一、题目

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

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

示例 1:

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

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

示例 2:

输入:head = 2,1, x = 2

输出:1,2

提示:

链表中节点的数目在范围 0, 200

-100 <= Node.val <= 100

-200 <= x <= 200


二、解法

简单粗暴的做法:遍历原链表,当前节点新建一个,遇到小的,放到小的链表中,遇到大的,放到大的链表中,最后合并一下


完整代码

python 复制代码
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
        low = ListNode()
        high = ListNode()
        ll, hh = low, high
        cur = head
        while cur:
            man = ListNode(cur.val)
            if cur.val < x:
                ll.next = man
                ll = ll.next
            else:
                hh.next = man
                hh = hh.next
            cur = cur.next
        ll.next = high.next
        return low.next

相关推荐
csdn_aspnet9 小时前
javascript 算法 LeetCode 编号 70 - 爬楼梯
开发语言·javascript·算法·leetcode·ecmascript
shehuiyuelaiyuehao10 小时前
多线程入门
java·python·算法
Navigator_Z10 小时前
LeetCode //C - 1073. Adding Two Negabinary Numbers
c语言·算法·leetcode
醇氧10 小时前
【OpenClaw】更换阿里百炼完整配置指南
算法·ai
Tina学编程10 小时前
[HOT100]每日一练------最长连续序列
算法·hot 100
csdn_aspnet10 小时前
PHP 算法 LeetCode 编号 70 - 爬楼梯
算法·leetcode·php
沈浩(种子思维作者)11 小时前
没有错误,正确将一文不值
人工智能·python·算法·量子计算
x_xbx11 小时前
LeetCode:5. 最长回文子串
算法·leetcode·职场和发展
快手技术11 小时前
免费报名|生成式推荐技术如何实现体系化演进?快手技术沙龙第四期开启!
算法
初夏睡觉11 小时前
数字截断求和 题解
算法