题目要求

思路
这道题可以用快慢指针的思路。快指针先走k步,之后快慢指针同步走,当快指针到链表最后一个节点时,慢指针正好在倒数第k个节点,因为两个指针始终相差k步,所以,慢–快之间的节点即为相差的k的元素;
步骤
- 定义快慢指针p1、p2;
- 快指针先走k步,定义变量记录走的步数,快指针走完k步后,快慢指针同步走,直到快指针走到最后一个节点;
- 注意,最后返回p1即可。
Code part
var getKthFromEnd = function(head, k) {
let p1 = head,p2 = head;
let index = 1;
while(p2.next){
p2 = p2.next;
index++;
if(index > k){
p1 = p1.next;
}
}
return (index >= k) && p1
};

这篇博客探讨了一种常见的链表问题解决方案——快慢指针法。通过设置两个指针,快指针先走k步,然后两者同步移动,当快指针到达链表尾部时,慢指针指向的就是倒数第k个节点。这种方法简洁高效,适用于寻找链表中特定位置的节点。

被折叠的 条评论
为什么被折叠?



