题目描述
输入一个链表,输出该链表中倒数第k个结点。
思路: 先指定一个变量pointer走k-1个节点,然后head和pointer同时移动,直到pointer走到尾节点。本题一个陷阱在于如何解决异常问题。包括,k为负值,k大于链表长度,链表为空。
参考代码:
public ListNode FindKthToTail(ListNode head,int k) {
if (head == null || k <= 0) {
return null;
}
ListNode pointer = head;
for (int i = 0; i < k - 1; i++) {
pointer = pointer.next;
if (pointer == null) {
return null;
}
}
while (pointer.next != null) {
head = head.next;
pointer = pointer.next;
}
return head;
}