链表中倒数第k个结点
题目
输入一个链表,输出该链表中倒数第k个结点。
思路
两个指针的问题。让一个指针先走k,另外一个指针后走,保证当前指针比先走的指针晚k步。
代码
public class FindKthToTail {
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public ListNode FindKthToTail(ListNode head,int k) {
//双节点的问题,一个节点先走k,那么就能保证先走的比后走的大k
if (head==null||k<1){
return null;
}
ListNode pre = head;
for (int i=1;i<k;i++){
if (pre.next!=null){
pre = pre.next;
}else {
return null;
}
}
while (pre.next!=null){
head = head.next;
pre = pre.next;
}
return head;
}
}