广州市网站建设_网站建设公司_留言板_seo优化
2026/1/8 22:05:30 网站建设 项目流程

求解代码

publicListNodeFindKthToTail(ListNodepHead,intk){// 快慢指针开始都指向链表头节点ListNodefast=pHead;ListNodeslow=pHead;// 快指针先向前移动 k 步for(inti=0;i<k;i++){if(fast!=null){fast=fast.next;}else{// 若快指针提前到末尾(说明k > 链表长度),直接返回nullreturnnull;}}// 快慢指针同步向后移动,直到快指针指向nullwhile(fast!=null){fast=fast.next;slow=slow.next;}// 慢指针正好指向倒数第k个节点returnslow;}

为什么可以这么做呢?

这里说明一下:

假设啊,链表总长度是n,fast指针先移动k步后,剩下的没有走的长度就是n-k;

之后,fast和slow指针同步移动,

当fast指针走完剩下的n-k步到达末尾时,

slow指针也恰好走了n-k步,

而这个位置正好就是倒数第k个节点的位置。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询