当前位置:网站首页>链表的常见算法总结
链表的常见算法总结
2020-11-06 01:18:00 【ClawHub的博客】
1、两个单链表求和
445. 两数相加 II
双栈法更好理解。
1 |
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { |
将两个链表构造两个栈,使用栈先进后出的特性,做两个链表倒叙做计算,注意进位的情况。
2、单链表非递归翻转,不借助其他数据结构
206. 反转链表
单链表的翻转就是将相邻两个节点的指针翻转。需要借助两个额外的指针用来存储当前节点的前后节点。
1 |
public static ListNode reverseList(ListNode head) { |
3、回文链表(用 O(n) 时间复杂度和 O(1) 空间复杂度)
234. 回文链表
通过快慢指针获取链表中间节点位置,将后半段链表反转,之后迭代前后链表,判断值是否相同。
1 |
public static boolean isPalindrome(ListNode head) { |
4、环形链表
141. 环形链表
检测链表中是否有环,可以使用两种方法:使用HashSet或者快慢指针。
1 |
public static boolean hasCycle(ListNode head) { |
5、删除链表种所有值为val的节点
203. 移除链表元素
链表移除操作要借助一个哨兵节点,简化删除。
1 |
public static ListNode removeElements(ListNode head, int val) { |
6、合并两个有序链表
21. 合并两个有序链表
需要使用哨兵节点。
1 |
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) { |
总结
链表常用的算法经常会借助快慢指针和哨兵节点。只要用到哨兵节点head就会有pre节点相配合。
版权声明
本文为[ClawHub的博客]所创,转载请带上原文链接,感谢
https://clawhub.club/posts/2020/01/06/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/%E9%93%BE%E8%A1%A8%E7%9A%84%E5%B8%B8%E8%A7%81%E7%AE%97%E6%B3%95%E6%80%BB%E7%BB%93/
边栏推荐
猜你喜欢
有关PDF417条码码制的结构介绍
网络安全工程师演示:原来***是这样获取你的计算机管理员权限的!【维持】
(1) ASP.NET Introduction to core3.1 Ocelot
Gradient understanding decline
drf JWT認證模組與自定製
TF flags的简介
DevOps是什么
01 . Go语言的SSH远程终端及WebSocket
Probabilistic linear regression with uncertain weights
Didi elasticsearch cluster cross version upgrade and platform reconfiguration
随机推荐
Flink on paasta: yelp's new stream processing platform running on kubernetes
微服務 - 如何解決鏈路追蹤問題
自然语言处理之命名实体识别-tanfordcorenlp-NER(一)
WeihanLi.Npoi 1.11.0/1.12.0 Release Notes
PPT画成这样,述职答辩还能过吗?
对pandas 数据进行数据打乱并选取训练机与测试机集
nlp模型-bert从入门到精通(一)
Elasticsearch database | elasticsearch-7.5.0 application construction
ThreadLocal原理大解析
C language 100 question set 004 - statistics of the number of people of all ages
01 . Go语言的SSH远程终端及WebSocket
nlp模型-bert从入门到精通(二)
Serilog原始碼解析——使用方法
如何对Pandas DataFrame进行自定义排序
技術總監,送給剛畢業的程式設計師們一句話——做好小事,才能成就大事
业内首发车道级导航背后——详解高精定位技术演进与场景应用
(1)ASP.NET Core3.1 Ocelot介紹
十二因子原则和云原生微服务 - DZone
Electron应用使用electron-builder配合electron-updater实现自动更新
Technical director, to just graduated programmers a word - do a good job in small things, can achieve great things