分隔链表(LeetCode)

news2024/9/9 0:51:03

题目

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

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

示例1:

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

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

 

示例2:

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

        输出:[1,2]

提示:

  •   链表中节点的数目在范围[0,200]
  • -100<=Node.val<=100
  • -200<=x<=200

解题

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next


def partition(head: ListNode, x: int) -> ListNode:
    # 创建两个虚拟头节点
    smaller_head = ListNode(0)
    greater_head = ListNode(0)

    # 用两个指针来操作这两个链表
    smaller = smaller_head
    greater = greater_head

    # 遍历原链表
    while head:
        next_node = head.next  # 先保存下一个节点
        if head.val < x:
            # 如果节点值小于 x,将其加入到小链表
            smaller.next = head
            smaller = smaller.next
        else:
            # 否则加入到大链表
            greater.next = head
            greater = greater.next

        head.next = None  # 断开当前节点的 next 指针
        head = next_node  # 移动到下一个节点

    # 将大链表的末尾指向 None
    greater.next = None
    # 将小链表的末尾连接到大链表的头部
    smaller.next = greater_head.next

    return smaller_head.next


def create_linked_list(values):
    # 通过值列表创建链表
    if not values:
        return None
    head = ListNode(values[0])
    current = head
    for value in values[1:]:
        current.next = ListNode(value)
        current = current.next
    return head


def print_linked_list(head: ListNode):
    # 打印链表的值
    values = []
    while head:
        values.append(head.val)
        head = head.next
    print(" -> ".join(map(str, values)))


if __name__ == '__main__':
    test_values = [-1, 1, 2, 2, 4, 3, 5]
    test_x = 3
    # 创建链表
    test_head = create_linked_list(test_values)

    # 分隔链表
    new_head = partition(test_head, test_x)

    # 打印结果
    print("分隔后的链表:")
    print_linked_list(new_head)

分隔后的链表:
-1 -> 1 -> 2 -> 2 -> 4 -> 3 -> 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

七言-绝美崇州

题记 今天&#xff0c;2024年07月30日&#xff0c;在看到《今日崇州》 发布的航拍风光照片之后&#xff0c;这才方知笔者虽已寄居崇州“西川第一天”街子古镇养老逾五年&#xff0c;竟然不知崇州拥有如此之多的青山绿水&#xff0c;集生态、宜居、智慧、文化、旅游丰富资源于一…

python if语句如何结束

python if语句如何结束&#xff1f;下面给大家介绍两种终止方法&#xff1a; break 用于提前终止循环&#xff1b; num 1 while num < 100:if num > 10:breakprint(num)num 2 print("结束") 结果如下&#xff1a; 1 3 5 7 9 结束 continue 用于跳出当前循…

为 Oh My Zsh 安装 Powerlevel10k 主题

继上一章 安装Zsh 与 oh my zsh 打开终端&#xff0c;运行以下命令&#xff0c;从 GitHub 上克隆 Powerlevel10k 代码库&#xff0c;并将文件放到 Oh My Zsh 的配置文件夹中 git clone https://github.com/romkatv/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k 用文本…

海外短剧平台部署与快速搭建实战指南

目录 一、海外短剧系统是什么 二、搭教程 技术选型 开发前端和后端 三、部分代码展示 随着网络覆盖的广泛扩展与全球化趋势的日益加深&#xff0c;构建面向海外的短视频剧集平台已演变为企业进军国际舞台、拓宽市场边界的关键策略。海外短剧系统不仅承载着将精心制作的短剧…

moment.js时间格式化插件使用

moment.js插件常用api备忘 moment.js插件功能远不不仅仅是在格式化日期上&#xff0c;还是有很多很好用奇淫技巧&#xff0c;使用起来也是更加方便&#xff0c;主要在vue项目中使用偏多&#xff0c;&#xff0c;但是有时候也不是总使用&#xff0c;将一些项目中可能会用&#x…

国内民营企业「数字化转型」典型案例

一、企业简介 三一集团成立于1989年&#xff0c;现有3家上市公司&#xff08;三一重工、三一国际、三一重能&#xff09;&#xff0c;公司总资产超2000亿元&#xff0c;在国内12个省市设有生产基地&#xff0c;在海外建有印度、美国、德国、巴西四大研发制造基地&#xff0c;业…

【国产化信创平台】麒麟银河V10系统虚拟机创建

目录 一、麒麟V10系统镜像下载 二、虚拟机创建流程 三、麒麟银河系统安装流程 一、麒麟V10系统镜像下载 https://www.kylinos.cn/# 官方访问还是会有问题&#xff0c;如果有需要麒麟银河Kylin系统V10的镜像文件&#xff0c;可以留下邮箱或者私信博主获取。 二、虚拟机创…

【LeetCode】16. 最接近的三数之和

三数之和这道题被反复考到&#xff0c;但是我一次都没给写出来&#xff0c;真是汗颜&#xff01;本题是三数之和的一道变形题&#xff0c;也是一道好题&#xff01;本题有两个关键点&#xff1a;其一&#xff0c;双指针是怎么个用法&#xff1f;在本题中是怎么实现的&#xff1…

智慧的拼图:聚类分析的启示

文章目录 聚类分析简介K-means聚类什么是K-means聚类&#xff1f;K-means聚类的步骤K-means聚类的特点K-means聚类实例 层次聚类什么是层次聚类&#xff1f;层次聚类的类型层次聚类的步骤层次聚类的特点层次聚类实例 K-means与层次聚类对比相同点不同点 结论补充 聚类分析是数据…

【永洪BI】1.添加数据源

目录 一、添加文本数据源&#xff08;EXCEL&TEXT&#xff09; 二、添加Mysql数据源 一、添加文本数据源&#xff08;EXCEL&TEXT&#xff09; 略 二、添加Mysql数据源 1.添加Mysql驱动 2.问题&#xff1a; 问题① 原因&#xff1a; Jar文件上传校验&#xff0c;只允…

类静态方法将python 中把不同脚本融合为一个大脚本 互不影响的方法!首发 以便于维护和扩展。

一般遇见想要方便管理或者集合的大脚本 我们管理很麻烦 用这个方法 无论是什么方面的脚本 都能放在一个大脚本中运行 互不干扰。 将所有功能整合到一个单一的脚本中&#xff0c;而不再依赖外部的.py文件&#xff0c;你可以将rendering.py和sercurity.py中的函数代码直接复制到…

centos7 安装minio

文章目录 下载 Minio 二进制文件配置 Minio将Minio设置成服务 配置Systemd服务启动创建minio变量文件&#xff1a;/etc/default/minio创建Service File&#xff1a;/etc/systemd/system/minio.service设置开启自启动 Nginx反向代理nginx配置 下载 Minio 二进制文件 cd /usr/lo…

VLM系列文章6-Cambrian-1

以视觉为中心的多模态大模型Cambrian-1&#xff0c;主要考虑的是MLLM中视觉模型的影响。 1、评估 LLM 还是 MLLM&#xff1f;&#xff1a;我们在使用 23 种不同的视觉主干训练的 MLLM 中比较了视觉禁用和视觉启用设置之间的性能。我们的研究结果表明&#xff0c;MMMU 和 AI2D 等…

有没有视频ai换脸的软件?

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/ 发现大家对AI换脸都非常感兴趣&#xff0c;AI换脸一般的步骤是&#xff1a;上传自己的照片→选择不同的风格→制作出被替换的GIF图或视…

安卓修改logo与开机动画后不显示问题解决

问题描述 替换安卓logo与开机动画bootanimation.zip画面是花的或黑的 修复步骤 手动替换安卓framework中的开机logo后显示异常排查 在电脑上打开logo图片, 查看分辨率, 再adb shell wm size查看设备的分辨率,要求二者一致.电脑上右键点击logo图片,查看属性,要确保它的位深度…

数据结构与算法 - 二分查找

一、二分查找 二分查找算法也称折半查找&#xff0c;是一种非常高效的工作于有序数组的查找算法。 时间复杂度 最坏情况&#xff1a;O(log n)最好情况&#xff1a;如果待查找元素恰好在数组中央&#xff0c;只需要循环一次O(1&#xff09; 空间复杂度 递归->O(log n)&a…

暑期C++ printf和scanf的平替

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 C中也有专门的输入和输出的方法 首先我们需要一个头文件&#xff0c;也就是#include<iostream> 然后根据我们命名空间的知识可知这个地方如果我们要使用必须先展开 可以全部展开比如using namespa…

K8s大模型算力调度策略的深度解析

随着大数据和人工智能技术的飞速发展&#xff0c;Kubernetes&#xff08;简称K8s&#xff09;作为容器编排的领军者&#xff0c;在支撑大规模模型训练和推理方面扮演着越来越重要的角色。在大模型算力的调度过程中&#xff0c;如何高效、合理地分配和管理资源成为了一个亟待解决…

实验2-5-1 求排列数

本题要求实现一个计算阶乘的简单函数&#xff0c;使得可以利用该函数&#xff0c;根据公式 算出从n个不同元素中取出m个元素&#xff08;0<m≤n&#xff09;的排列数。 函数接口定义&#xff1a; double fact( int n );其中n是用户传入的参数&#xff0c;函数返回n的阶乘。…

数据分析概要【数据分析---偏企业】

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 数据分析概要前 必看 Python 初阶 Python–语言基础…