剑指offer:链表中倒数第k个结点

class Solution{
public:
		ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){
			ListNode* slowNode = pListHead;
			while(k!=0){
				k--;
				if(pListHead != nullptr) pListHead = pListHead-> next;
				else
				 	return nullptr;
			}
			while(pListHead != nullptr){
				slowNode = slowNode -> next;
				pListHead = pListHead -> next;
			}
			return slowNode;
		}
};


整体思路:首先让快指针先行k步,然后让快慢指针每次同行一步,直到快指针指向空节点,慢指针就是倒数第K个节点

首先定义两个指针,快和慢。k循环到零,同时快指针往前走k长,在来个循环,当链表不为空时,快指针和慢指针一起往前走,快指针走到头的时候就跳出循环,此时慢指针所在的位置就是要求的倒数第K个结点!!!

#剑指offer#
全部评论
感谢分享,学习一下
1 回复 分享
发布于 2023-03-21 17:39 湖北
感谢大佬分享
1 回复 分享
发布于 2023-03-21 17:18 天津

相关推荐

smile丶snow:感觉可以加一些ai相关的内容吧。现在面试很少能逃掉这些问题。羡慕里面感觉缺少一个项目背景。比如第二个项目后台管理系统…你为什么要做这个后台管理系统呢?是为了解决什么问题。比如你管理一个商品列表的增加减少。需要一个背景吧。哦或者说你第一个电子书那个是c端的,你肯定需要一个管理系统吧,那就是第二个后台管理系统,但这两个难道不应该是一个项目吗?可以稍微包装一下,最起码让人看着不是玩具项目。个人观点。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务