[牛客]链表中倒数第k个结点
创始人
2024-06-01 18:42:49
0

使用快慢指针法:

两种思路:

1.fast先向后走k-1次,slow再向后走1次,然后fast和slow同时向后走,当fast走到最后一个结点时,slow刚好在倒数第k个位置上;

2.fast先向后走k次,slow再向后走1次,然后fast和slow同时向后走,当fast走到最后一个结点的后面时(此时为NULL),slow刚好在倒数第k个位置上;

根据这个思路,我们可以写出初始代码如下:

/*** struct ListNode {*  int val;*  struct ListNode *next;* };*//*** * @param pListHead ListNode类 * @param k int整型 * @return ListNode类*/
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) 
{struct ListNode* fast,*slow;fast = slow = pListHead;while(k--)//循环k次{fast = fast->next;//fast向后走k次}while(fast)//当fast为空时,slow指向倒数第k个结点{slow = slow->next;//不为空,同时向后走fast = fast->next;}return slow;
}

需要注意代码中while(k--)是循环k次,而while(--k)是循环k-1次.

这样看,代码似乎没什么问题,但是运行之后报了错:

这时我们需要通过测试用例来进行分析

通过第三个用例,我们可以考虑到链表为空的情况

通过第四个用例,考虑到k多于链表结点数时的情况

进行逻辑分析和修改后的代码如下:

正确代码

/*** struct ListNode {*  int val;*  struct ListNode *next;* };*//*** * @param pListHead ListNode类 * @param k int整型 * @return ListNode类*/
struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) 
{if(pListHead == NULL)//链表为空{return NULL;}struct ListNode* fast,*slow;fast = slow = pListHead;while(k--){if(fast== NULL)//当k>链表结点数时{return NULL;}fast = fast->next;}while(fast){slow = slow->next;fast = fast->next;}return slow;
}

需要注意的是代码中的if(fast == NULL)语句必须放在fast = fast->next;之前,原因可自行分析


结语:

这里本章内容就介绍完了,文章中某些内容我们之前有介绍,所以只是一笔带过,还请谅解。

希望以上内容对大家有所帮助👀,如有不足望指出🙏**

前路漫漫!努力变强💪💪 吧!!


相关内容

热门资讯

修改工具教程版!博雅红河棋牌智... 您好,博雅红河棋牌这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏...
修改工具教程版!淮滨麻将智能插... 您好,淮滨麻将这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
修改工具教程版!财神十三张智能... 修改工具教程版!财神十三张智能插件是真的,分享详细开挂攻略1、让任何用户在无需AI插件第三方神器的情...
修改工具教程版!欢乐茶馆智能插... 您好:欢乐茶馆确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发...
修改工具教程版!闲来大茶馆智能... 您好,闲来大茶馆这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中...
修改工具教程版!随便玩红拐弯智... 亲,随便玩红拐弯这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,随便玩红拐弯的开挂...
修改工具教程版!旺旺麻将智能插... 修改工具教程版!旺旺麻将智能插件是真的,分享详细开挂攻略是一款可以让一直输的玩家,快速成为一个“必胜...
修改工具教程版!如意智能插件是... 修改工具教程版!如意智能插件是真的,分享详细开挂攻略是一款可以让一直输的玩家,快速成为一个“必胜”的...
修改工具教程版!欢乐二七十智能... 修改工具教程版!欢乐二七十智能插件是真的,分享详细开挂攻略;原来确实真的有挂(需添加指定薇71989...
修改工具教程版!星禾卡五星智能... 星禾卡五星这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款...
修改工具教程版!中天游戏智能插... 亲,中天游戏这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,中天游戏的开挂软件,名...
修改工具教程版!微乐亲友房智能... 亲,微乐亲友房这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,微乐亲友房的开挂软件...
修改工具教程版!水果乐智能插件... 您好,水果乐这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打牌...
修改工具教程版!大掼蛋智能插件... 修改工具教程版!大掼蛋智能插件是真的,分享详细开挂攻略;原来确实真的有挂(需添加指定薇7198902...
修改工具教程版!山东棋牌智能插... 您好,山东棋牌这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
修改工具教程版!渝都亲友圈智能... 渝都亲友圈这个游戏其实有挂的,确实是有挂的,需要了解加客服微信:【7198902】, 很多玩家在这款...
修改工具教程版!福星游戏智能插... 修改工具教程版!福星游戏智能插件是真的,分享详细开挂攻略是一款可以让一直输的玩家,快速成为一个“必胜...
修改工具教程版!超跑捕鱼智能插... 您好:超跑捕鱼确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发...
修改工具教程版!圈友望江麻将智... 修改工具教程版!圈友望江麻将智能插件是真的,分享详细开挂攻略1、让任何用户在无需AI插件第三方神器的...
修改工具教程版!吉祥互娱智能插... 您好:吉祥互娱确实真的有挂,软件加微信【7198902】确实是有挂的,很多玩家在这款游戏中打牌都会发...