算法---链表总结篇

一、双指针”法解决链表问题

背景:单链表问题由于顺序遍历的特性,有时候执行一些操作的时候会出现问题看似需要多次遍历才能获取数据。

使用双指针法能在一次遍历中获取更多的数据,也可以节约更多的额外控件。“双指针”就是用一个快指针一个慢指针同时进行单链表的顺序扫描。

如此就可以使用快指针的时间差给慢指针提供更多的操作信息。

下面是两个LeetCode下的习题:

(1)给定一个链表,删除链表的倒数第 个节点并返回头结点。

思路:构建先导指针,快于后续指针n-1步,先导指针指向链表尾部时候,慢指针就指向倒数第n个节点

(2)给定一个链表,判断链表中否有环。

传统思路:找个容器把出现的点存起来,出现重复点就判断成环(缺点很明显:额外内存占用)

双指针思路:快指针比慢指针先走,如果快指针被慢指针追上,说明进入闭环

 

未完待续。。。

1.实现链表的逆序

2.从无序链表中移除重复性

3.计算两个单链表所代表的的数之和

4.对链表进行重新排序

5.找出单链表中的倒数第k个元素

6.检测链表是否有环

7.把链表相邻元素翻转

8.把链表以K个节点为一组进行翻转

9.合并两个有序链表

10.只给定单链表中某个节点的指针的情况下删除该节点

11.判断两个单链表(无环)是否交叉

12.展开链接列表

转载于:https://www.cnblogs.com/nxf-rabbit75/p/10008297.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值