题目要求
思路
这道题可以用快慢指针的思路。快指针先走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
};