输入一个链表,输出该链表中倒数第k个结点。
解题思路:第一次遍历链表,保存链表的长度;第二次遍历链表,定位到倒数第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) {
if(head == null){//链表为空时
return head;
}
int count = 0;
ListNode node = head;
while(node != null){
count++;//保存链表长度
node = node.next;
}
if(count < k){//特殊情况,要求的结点不在链表里
return null;
}
ListNode cur = head;
for(int i = 0; i < count - k; i++){//遍历找到倒数第K个结点
cur = cur.next;
}
return cur;
}
}