链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个结点。
思路
单向链表只有从前往后的指针而没有从后往前的指针。假设有n个节点,倒数第k个节点就是从头结点开始的第n-k+1个节点,得到节点个数n,再从头结点开始往后走n-k+1步。如果不用双指针的话,需要遍历两次链表,一次统计出节点个数,一次找倒数第k个节点。
用双指针。第一个指针走到k个位置时,第二个指针从头开始出发,两者的距离就可以始终保持为k。第一个指针走到最后时,第二个指针的位置就是倒数第k个结点的位置。要注意循环的条件,因为第一步就进行了next操作,所以应该是–k。
代码
const FindKthToTail = (head, k) => {
if(!head || k<= 0) return null;
let first = head;
let second = head;
while(