链表面试题思路整理(图解)

1】返回单链表倒数第K个元素
思路:快慢指针,快指针先走K,然后一起走,快指针=null的时候,慢指针指向的就是
在这里插入图片描述

2】判断两个链表是否相交,并返回交点
思路1:求出两个链表的长度,计算长度差m,长的先走m,然后一起走,如果相等则相交并第一个就是交点。
思路2:链表a和链表b一起走,a走完自己以后走b,b走完自己以后走a。如果相等则相交并第一个就是交点。
在这里插入图片描述

3】判断链表是否有环,环的长度,环的入口
思路:快慢指针, 快指针每次走2格,慢指针每次都1格,如果相遇则必有环。
如果再次相遇,中间慢指针走过的路程就是环的长度。
从相遇点到环入口的距离 = 从head 到环入口的距离 (因为快指针走过的路程永远是慢指针的2倍,计算公式可得)
在这里插入图片描述

4】对单链表进行排序
思路:遍历链表长度,后使用归并排序,时间复杂度O(nlogn)

5】奇偶链表: 将一个单链表的奇数索引排在一起,偶数索引排在一起。
思路:两个指针分别指向奇数的last,偶数的last ,同步向前next.next
在这里插入图片描述

6】回文链表
思路:快慢指针,当快指针到头后,满指针指向的就是中间元素/中间前一个元素(偶数个)。期间前半部分一直反转链表。
然后从中间开始两个指针往相反方向走,判断相等。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值