题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思路
这道题的思路很巧妙,毕竟链表不能直接算出链表长度,要怎么做才能快速算出这个答案呢?用两个指针,分别为up和down,up指针先走k-1步,接下来两个指针一起走,当up指针走到尽头了,那么down指针就是倒数k个节点,思路很巧妙,但是也很容易理解
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
ListNode up = head;
ListNode down = head;
if(head == null || k <= 0) return null;
for(int i = 1; i <= k - 1; i++){
if(up.next != null){
up = up.next;
}else
return null;
}
while(up.next != null){
up = up.next;
down = down.next;
}
return down;
}
}