题目描述
输入一个链表,输出该链表中倒数第k个结点。
这道题的难度中等 主要检验鲁棒性。
思路:
依次存储目前位置 链表的倒数第K个节点。
需要注意的是越界,空的处理。
public ListNode FindKthToTail(ListNode head, int k) {
//判断 是否为空链表
if (head == null) return head;
//判断位置是否为0
if (k == 0) return null;
//因为位置是从1开始的 我们的其实位置也从1开始
int index = 1;
//默认返回节点是头节点
ListNode checkNode = head;
//依次走向next节点
while (head.next != null) {
//当index - k >= 0 说明这个是我们目前的倒数第K个节点保存一下
//也就是头结点后移一下
if (index - k >= 0) {
checkNode = checkNode.next;
}
index++;
head = head.next;
}
//判断是够K位置节点 比节点的数量还多 如果超过范围 那么返回null
if (index < k) {
return null;
}
return checkNode;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}