每日一题(11)——单链表常见问题

一、单链表的存取

 

1.找出单链表的倒数第K个元素(仅允许遍历一遍链表)

两个指针fast,slow:
fast首先前进到第k个位置;然后两指针共同后移,直到fast到达末尾,slow所指元素即为所求。
 

2.找出单链表的中间元素(仅允许遍历一遍链表)

两个指针fast,slow:
fast每次后移2次,slow每次后移1次,直到fast到达末尾,slow所指元素即为所求。
 
都是利用指针追赶方法。
 
 

二、单链表与环的问题

 
 

1. 判断单链表是否有环(6形状)?

依然使用指针追赶方法:
两个指针fast,slow:从头指针(起点)开始,fast每次后移2次,slow每次后移1次,若相遇则两者存在环;若fast遇到NULL,则退出(不存在环,所以fast会遇到NULL)
 

2. 如何找到换入口?

由于fast和slow在碰撞点相遇时,slow走过的距离为(a+x),fast走过的距离为(a+2x+y),fast的前进路程是slow的2倍,所以,可以得出y=a;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值