题目描述
输入一个链表,输出该链表中倒数第 k 个结点。
解题思路
快慢指针的典型应用。
定义两个指针,让快指针先跑 k 次,然后两个指针一起跑直到快指针变为 null,结束遍历,那么跑的慢的指针的位置就是倒数第 k 个结点。这里注意一下可能链表的长度比 k 要小分情况讨论也行并在一起写也可以。
代码实现
import java.util.Scanner;
public class Problem14 {
public class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
public static ListNode FindKthToTail(ListNode head, int k) {
ListNode first = head;
ListNode second = head;
int i = 0;
for (; first != null; i++) {
if (i >= k)
second = second.next;
first = first.next;
}
if (i < k)
return null;
else
return second;
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
}
}