题意:
实现一种算法,找出单向链表中倒数第 k 个节点。
返回该节点的值。
注意:本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:
给定的 k 保证是有效的。
思路:
1.这里使用双指针的方法:
former 初始值 为head
latter 初始值为 head;
二者刚开始都指向,头结点
2.构建双指针的距离:
前指针former 先向前 走 k 步。 此时二者相差k
3.两个指针共同移动,
通过循环,直到前指针former跳出尾结点,此时latter指针与尾结点相差k-1 ,说明 latter指向的是倒数第k个结点。
4.返回latte.val。 便可输出之后所以元素值。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public int kthToLast(ListNode head, int k) {
ListNode fastter = head;
ListNode latter = head;
for(int i = 0 ; i < k; i++){
fastter = fastter.next;
}
while(fastter != null){
fastter = fastter.next;
latter = latter.next;
}
return latter.val;
}
}