题目描述
输入一个链表,输出该链表中倒数第k个节点。注:链表的尾节点是倒数第一个节点。
解题思路
思路很简单,使用两个指针,指针1首先走k步,然后指针2开始走,指针1走完时即得到题目要求的节点。
但是基于鲁棒性,我们需要考虑一下三点:
- 链表为空;
- 链表长度小于k;
- k小于等于0;
代码
public static ListNode findKthToTail(ListNode head,int k){
//链表为空、k==0或者不符合要求
if(head==null || k<=0)
return null;
ListNode kthNode = null;
ListNode pHead = head;
int i = 0;
while(pHead!=null && i < k){
pHead = pHead.next;
i++;
}
if(i < k){
return null;
} else {
kthNode = head;
while(pHead!=null){
pHead = pHead.next;
kthNode = kthNode .next;
}
}
return kthNode;
}