python代码练习:链表——分隔链表

参考知识:

  1. 什么是链表
  2. Optional有什么用

题目:

题目来源:力扣

代码:

from typing import Optionalclass ListNode:''' 链表结点的数据类型 '''def __init__(self, val=0,next=None):self.val = valself.next = nextdef convert_to_linked_list(lst):''' 将list转换为单链表 '''if not lst:return Nonehead = ListNode(lst[0]) # list第一个元素作为head结点i = headfor i in range(1, len(lst)):new_node = ListNode(lst[i]) # 元素结点化i.next = new_node    # 追加新nodei = i.next    # 结点标志位移到下一结点return head     #返回head结点class Solution:''' 小于x的元素在x左边,大于x的元素在x右边,保持相对位置不变 '''def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:small, large = ListNode(0), ListNode(0) #声明2个链表i, j = small, large # 两个链表的结点标志位while head:if head.val < x:    # <x 的放在small链表i.next = headi = i.nextelse:   # >=x 的放在large链表j.next = headj = j.nexthead = head.next    # 比较完当前head后,比较下一个i.next = large.next # 连接2个链表,i结点 即 large链表的第二个结点j.next = None   # 尾结点指向Nonereturn small.nextdef run(self,lst,x):''' 以list形式输出最终结果 '''res=[]head = self.partition(head=convert_to_linked_list(lst),x=x)while head:res.append(head.val)head=head.nextreturn resif __name__ == '__main__':lst=[1,4,3,2,5,2]s=Solution()print(s.run(lst,x=3))

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

likeshop开源免费商用电商系统存在任意文件上传漏洞CVE-2024-0352

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. likeshop开源免费商用电商系统简介 微信公众号搜索…

Xcode 15 for Mac 正式激活版下载

Xcode 15 for Mac是苹果公司开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于开发Mac、iOS、iPadOS、tvOS、watchOS和应用程序。Xcode 15引入了一系列新功能和改进&#xff0c;旨在提高开发人员的工作效率。 软件下载&#xff1a;Xcode 15 for Mac 正式…

链表练习 Leetcode234.回文链表

题目传送门&#xff1a;Leetcode234 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&…

使用WAF防御网络上的隐蔽威胁之扫描器

在网络安全领域&#xff0c;扫描器是用于侦察和识别网络系统漏洞的工具。 它们可以帮助网络管理员识别安全漏洞&#xff0c;也可能被攻击者用来寻找攻击目标。 扫描器的基本概念 定义&#xff1a;扫描器是一种自动化工具&#xff0c;用于探测网络和服务器中的漏洞、开放端口、…

MATLAB R2023b for Mac 中文

MATLAB R2023b 是 MathWorks 发布的最新版本的 MATLAB&#xff0c;适用于进行算法开发、数据可视化、数据分析以及数值计算等任务的工程师和科学家。它包含了一系列新增功能和改进&#xff0c;如改进了数据导入工具&#xff0c;增加了对数据帧和表格对象的支持&#xff0c;增强…

哪些软件有风景素材视频无水印?这些软件不可错过

哪些软件有风景素材视频无水印&#xff1f;如果你是一名摄影师、视频制作者或者只是喜欢欣赏美丽的风景&#xff0c;那么你一定不能错过本文介绍的这几款软件。这些软件以其丰富的风景素材视频资源&#xff0c;成为无数创作者和爱好者的首选。 1. 清爽视频编辑 清爽视频编辑器…

【河海大学论文LaTeX+VSCode全指南】

河海大学论文LaTeXVSCode全指南 前言一、 LaTeX \LaTeX{} LATE​X的安装二、VScode的安装三、VScode的配置四、验证五、优化 前言 LaTeX \LaTeX{} LATE​X在论文写作方面具有传统Word无法比拟的优点&#xff0c;VScode作为一个轻量化的全功能文本编辑器&#xff0c;由于其极强的…

LeetCode 热题 100 | 哈希

目录 1 基础知识 1.1 定义哈希表 1.2 遍历哈希表 1.3 查找某一个键 1.4 插入键值对 1.5 获取键值对的值 1.6 搜索功能 2 三道题 2.1 1. 两数之和 2.2 49. 字母异位词分组 2.3 128. 最长连续序列 菜鸟做题第一周&#xff0c;语言是 C 1 基础知识 1.1 定…

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

【现代密码学】笔记9-10.3-- 公钥&#xff08;非对称加密&#xff09;、混合加密理论《introduction to modern cryphtography》 写在最前面8.1 公钥加密理论随机预言机模型&#xff08;Random Oracle Model&#xff0c;ROM&#xff09; 写在最前面 主要在 哈工大密码学课程 张…

JavaScript从入门到精通系列第三十一篇:详解JavaScript中的字符串和正则表达式相关的方法

文章目录 知识回顾 1&#xff1a;概念回顾 2&#xff1a;正则表达式字面量 一&#xff1a;字符串中正则表达式方法 1&#xff1a;split 2&#xff1a;search 3&#xff1a;match 4&#xff1a;replace 知识回顾 1&#xff1a;概念回顾 正则表达式用于定义一些字符串的…

从传统到智能:机器视觉检测赋能PCB行业数字化转型!

PCB板在现代电子设备中是一个重要的组成部分&#xff0c;它是用来集成各种电子元器件的信息载体。在电子领域中&#xff0c;PCB板有着广泛的应用&#xff0c;而它的质量直接影响到产品的性能。随着电子科技技术和电子制造业的发展&#xff0c;贴片元器件的体积 变小&#xff0c…

金融CRM系统是什么?有哪些功能和作用

今年市场经济下行&#xff0c;投资趋向于保守、人们消费降级&#xff0c;对于金融行业来说影响很大。受经济形式的影响加上行业的数字化转型升级&#xff0c;金融企业都在寻求客户管理的新策略&#xff0c;维护好忠实客户、吸引新客户投资。小编认为CRM系统是管理客户的不二之选…