题目描述
输入一个链表,输出该链表中倒数第k个结点。
时间限制:1秒 空间限制:32768K 热度指数:408652
解答:
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {//思路:首先要考虑这个链表是否为空,其次要考虑输入的k是否比链表长度还大,或者k是负数,或者k是0,最后,考虑到时间效率问题,用两个变量一前一后就只需要遍历一次
//先让一个变量先走k-1步,然后两个变量同时向后移,当前面那个变量指针的下一位是null,也就是当它走到链表尾部时,后面那个变量指针就到了倒数第k个节点上了
public ListNode FindKthToTail(ListNode head,int k) {
if (null == head || k <= 0) {
System.out.println("链表为空或者k小于等于0");
return null;
}
ListNode prePoint = head, curPoint = head;
for (int i=0; i<k-1;i++) {
if (prePoint.next == null) {
System.out.println("链表的长度小于k");
return null;
} else {
prePoint = prePoint.next;
}
}
while (prePoint.next != null) {
curPoint = curPoint.next;
prePoint = prePoint.next;
}
return curPoint;
}
}