输入一个链表,输出该链表中倒数第k个结点。
用递归做。开始一层层地递归直到链表尾部,然后一层层出递归,出到地K层的时候那个节点就是倒数第K个节点
其实只要函数xFindKthToTail就可以,但要考虑OJ平台如何训练测试用例的。它运行一次main函数后多次调用xFindKthToTail(),如果没有一个函数去每次重新将val置0,anode置null的话,那每次val都是上一个测试用例的值而不是0。
OJ平台用全局变量的时候一定要注意这一点。
public class Solution {
public static int val=0;
static ListNode anode=null;
public static ListNode FindKthToTail(ListNode head,int k) {
val=0;
anode=null;
if(head!=null)
xFindKthToTail(head,k);
return anode;
}
public static ListNode xFindKthToTail(ListNode head,int k) {
if(head.next!=null){
xFindKthToTail(head.next,k);
}
val++;
if(val==k){
anode= head;
}
return anode;
}
}