题目
输入一个链表,输出该链表中倒数第k个结点。
解题思路
使用快慢指针。定义2个指针p,q。
第一步:先使用q指针走k步。
第二步:p、q一起走,直到q走到链表结尾,p则为所求
代码如下
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if (k <= 0) return null;
ListNode p = head;
ListNode q = head;
for (int i = 1; i < k; i++) {
if (q == null || q.next == null) return null;
q = q.next;
}
while (q.next != null) {
p = p.next;
q = q.next;
}
return p;
}
}