题目描述
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
思路:
双指针
第一个指针先走k步,然后第二个指针在从头走,这个时候两个指针同时移动。
当第一个指针移动到末尾的时候,返回第二个指针就可以了,第二个指针指向的值就是我们找的倒数第k个结点。
class Solution {
public int kthToLast(ListNode head, int k) {
ListNode first = head;//初始化first指针指向头结点
ListNode second = head;//初始化second指针指向头结点
while(k -- > 0){//first指针先走k步
first = first.next;
}
while(first != null){//循环条件是first指针不为空,走到null说明first走到链表的末尾
//两个指针分别移动
first =first.next;
second =second.next;
}
return second.val;//返回second指针指向的值
}
}