[牛客]链表中倒数第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;之前,原因可自行分析


结语:

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

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

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


相关内容

热门资讯

电脑屏幕打不开了怎么办?-电脑... 哎呀妈呀,今天真是倒霉透顶!一大早起床,准备打开电脑开始一天的工作,结果按了开机键,电脑嗡嗡响了几声...
什么是电脑病毒-警惕!电脑病毒... 哎呀,说到电脑病毒,我就一肚子火!这个讨厌鬼,总是在我们最不想要的时候出现,搞得我们头大!你知道吗?...
okrecovery注册码-O... 哎呀呀,今天真是气死我了!你知道吗,我一直在用的那个OkRecovery软件,居然提示我需要注册码了...
北京朝阳区高碑店:承载历史痕迹... 嗨,亲爱的朋友们,今天我想带你们走进一个地方,它叫高碑店,藏在北京朝阳区的一个角落里。这里,不是什么...
西软软件股份有限公司怎么样-西... 哎呀,说起西软软件股份有限公司,我这心里啊,五味杂陈!你知道吗,这公司就像那初恋,甜蜜又带着点儿酸涩...
克罗恩能治好吗-克罗恩病:顽固... 克罗恩病,这个名字听起来就像是从某个古老传说中跳出来的怪物,专门找我们这些无辜的人麻烦。每次听到有人...
华为手机单机游戏排行-华为手机... 嘿,小伙伴们,今天咱们聊聊华为手机上那些让人玩到停不下来的单机游戏!你们是不是也和我一样,手机里装了...
联想一体机xp系统下载-联想一... 嘿,大家好!今天我要和大家聊聊一个超级怀旧的话题——联想一体机XP系统下载!是不是听到XP这两个字母...
系统10.2壁纸-系统 10.... 哎呀,说到这个系统10.2的壁纸,我真是兴奋得不得了!你知道吗,每次换上新的壁纸,我的电脑屏幕就像换...
剑网3正在下载更新包-剑网 3... 哎呀呀,这会儿剑网3的更新包正在下载,我的心啊,简直是七上八下的!你知道的,每次游戏更新,都像是一场...
win10recovery怎么... 嘿,朋友们,今天咱们来聊聊那个让电脑小白也能秒变大神的神秘功能——Win10恢复!是不是有时候电脑突...
qq空间 邮箱无法打开-QQ ... 哎呀,真是烦死我了!今天一大早,我就想着去QQ空间看看有没有什么新鲜事,顺便查查邮箱里有没有什么重要...
北京小产权 算有房户吗-北京小... 哎呀,说到北京的小产权房,我这心里就五味杂陈的。你说,我这房子吧,虽然位置不错,价格也相对便宜,但一...
智汇云 恒生-智汇云恒生:开启... 智汇云恒生就像是一场突如其来的春雨,滋润了我干涸的科技心灵。说起智汇云,我就像是打开了潘多拉的盒子,...
身份证号提取省份-身份证号码的... 嘿,朋友,你有没有想过,那串每天都要输入无数次的身份证号码,其实藏着不少小秘密呢?比如说,你知道吗,...
网上邻居图标没了-电脑图标消失... 哎呀呀,这事儿可真是让人挠头啊!今儿个打开电脑,准备和我的网上邻居们打个招呼,结果,咦,图标呢?那个...
肛瘘手术时间长吗-肛瘘手术:虽... 哎呀,说到肛瘘手术,我这心里就直打鼓!你可能会想,不就是个小手术嘛,有什么大不了的?但你知道吗,这手...
360浏览器叠加-360 浏览... 大家好,我是你们的互联网小伙伴,今天我要来聊聊我使用360浏览器叠加功能的那些事儿。首先,得承认,一...
openoffice教育訓練1... 嘿伙计们,今天咱们聊聊OpenOffice教育训练,这可不是什么枯燥乏味的课,我们要一起嗨起来!Op...
雨林木风xpu盘装机教程-学会... 大家好!今天我要给大家带来一个超级酷炫的技能——用雨林木风XPU盘装机!是不是听起来就很刺激?别担心...