当前位置:网站首页>常见链表题及其 Go 实现
常见链表题及其 Go 实现
2022-07-30 18:28:00 【华为云】
链表中删除重复项
从链表中移除一个重复的值,链表是有序的。在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
Go 语言实现如下:
func(list *List) RemoveDuplicate() { curr := list.head for curr != nil { if curr.next != nil && curr.value == curr.next.value { curr.next = curr.next.next } else { curr = curr.next } }}算法分析:
该算法只用了一层循环,for 循环用于遍历列表。 每当有一个节点的值等于下一个节点的值时,该当前节点下一个将指向下一个节点的下一个。 这将从列表中删除下一个节点,算法复杂度为 O(n)
链表反转
将链表的内容以相反的顺序复制到另一个链表中。 如果原始链表包含顺序为 1,2,3,4 的元素,则新链表应包含顺序为 4,3,2,1 的元素。
func(list *List) CopyListReversed() *List { var tempNode, tempNode2 * Node curr := list.head for curr != nil { tempNode2 = &Node{curr.value, tempNode} curr = curr.next tempNode = tempNode2 } ll2 := new(List) ll2.head = tempNode return ll2}遍历列表并将节点的值添加到新列表中。 由于列表是正向遍历的,并且每个节点的值都被添加到另一个列表中,所以形成的列表与给定列表相反.
链表对比
比较给定头指针的两个链表的值。
func (list *List) CompareList(ll *List) bool { return list.compareListUtil(list.head, ll.head)}func(list *List) compareListUtil(head1 *Node, head2 *Node) bool { if head1 == nil && head2 == nil { return true } else if (head1 == nil) || (head2 == nil) || (head1.value != head2.value) { return false } else { return list.compareListUtil(head1.next, head2.next) }}列表是递归比较的。 此外,如果我们到达列表的末尾并且两个列表都是空的。 然后两个列表相等,因此返回 true
列表是递归比较的。 如果列表中的任何一个为空或对应节点的值不相等,则此函数将返回 false。
递归调用当前节点的下一个节点的比较列表函数。
边栏推荐
- Codeblocks + Widgets 创建窗口代码分析
- 基于b/s架构搭建一个支持多路摄像头的实时处理系统 ---- 使用yolo v5 系列模型
- 【HarmonyOS】【FAQ】鸿蒙问题合集3
- Pytorch基础--tensorboard使用(一)
- 中集世联达飞瞳全球工业人工智能AI领军者,全球顶尖AI核心技术高泛化性高鲁棒性稀疏样本持续学习,工业级高性能成熟AI产品规模应用
- Immersive experience iFLYTEK 2022 Consumer Expo "Official Designated Product"
- ESP8266-Arduino编程实例-BMP180气压温度传感器驱动
- 沉浸式体验科大讯飞2022消博会“官方指定产品”
- arcpy获取要素类(属性表)包含的数目
- 荐书 | 推荐好评如潮的3本数据库书籍
猜你喜欢

natural language processing nltk

「Redis应用与深度实践笔记」,深得行业人的心,这还不来看看?

【Swords Offer】Swords Offer 17. Print n digits from 1 to the largest

ESP8266-Arduino programming example-BMP180 air pressure temperature sensor driver

Application of time series database in the field of ship risk management
![[Summary] 1396- 60+ VSCode plugins to create a useful editor](/img/e4/65e55d0e4948c011585b72733d4d19.jpg)
[Summary] 1396- 60+ VSCode plugins to create a useful editor

沉浸式体验科大讯飞2022消博会“官方指定产品”

6块钱1斤,日本公司为何来中国收烟头?

NC | 西湖大学陶亮组-TMPRSS2“助攻”病毒感染并介导索氏梭菌出血毒素的宿主入侵...

Network Basics (3) 01-Basic Concepts of Networks - Protocols, Host Addresses, Paths and Parameters of URL Addresses & 127.0.0.1 Local Loopback Address & View URL IP Address and Access Ping Space + URL
随机推荐
【PHPWord】PHPOffice 套件之PHPWord快速入门
攻防世界web-Cat
【Swords Offer】Swords Offer 17. Print n digits from 1 to the largest
natural language processing nltk
【HarmonyOS】【FAQ】鸿蒙问题合集4
【HMS core】【FAQ】Account Kit、MDM能力、push Kit典型问题合集6
载誉而归,重磅发布!润和软件亮相2022开放原子全球开源峰会
【AGC】构建服务1-云函数示例
【剑指 Offe】剑指 Offer 18. 删除链表的节点
core sound driver详解
微博广告分布式配置中心的构建与实践(有彩蛋)
Network Basics (3) 01-Basic Concepts of Networks - Protocols, Host Addresses, Paths and Parameters of URL Addresses & 127.0.0.1 Local Loopback Address & View URL IP Address and Access Ping Space + URL
linux 安装mysql8.0 超详细教程(实战多次)
scrapy基本使用
DevEco Studio3.0下载失败,提示An unknown error occurred
Mongo for infrastructure
Meta元宇宙部门第二季度亏损28亿!仍要继续押注?元宇宙发展尚未看到出路!
软件测试13年从业经验的前辈,总结的5条测试就业建议....
node封装一个控制台进度条插件
NC | Tao Liang Group of West Lake University - TMPRSS2 "assists" virus infection and mediates the host invasion of Clostridium sothrix hemorrhagic toxin...