本文主要是介绍NO14、链表中倒数第k个结点 (还可以),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
14、 链表中倒数第k个结点 过,可以不再刷了
输入一个链表,输出该链表中倒数第k个结点。
示例1
输入
1,{1,2,3,4,5}
返回值
{5}
1、比较简单的一种方法
时间复杂度较高,没有二刷的那种方法好
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {int count=0;ListNode * node=pListHead;while(pListHead!=nullptr){count++;pListHead=pListHead->next;}count = count-k;if(count<0) return nullptr;while(count--)node=node->next;return node;}
二刷:
1、快慢指针,不应该说是先后指针
3 ms 376K
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {ListNode * slowNode = pListHead;while(k != 0){//这里判断 k 一直走到 0 即可k--;if(pListHead != nullptr) pListHead = pListHead->next;//在其中判断是否出现k 大于链表总长度的情况,//比如 【1,2,3,4,5】 6这样的情况,如果出现这样的情况,返回即可elsereturn nullptr;}while(pListHead != nullptr){//先走的不能为空slowNode = slowNode->next;pListHead = pListHead->next;}return slowNode;}
美女帅哥们如果觉得写的还行,有点用的话麻烦点个赞或者留个言支持一下阿秀~
如果觉得狗屁不通,直接留言开喷就完事了。
需要该笔记PDF版本的去个人公众号【拓跋阿秀】下回复“阿秀剑指offer笔记”即可。
这篇关于NO14、链表中倒数第k个结点 (还可以)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!