一,题目示例
输入:1->2->3->4->5->6 , 2
输出:5
二,解决思路
只要求出链表的长度,定义一个节点从头节点开始走长度减k步后此时这个节点所指向的节点就是倒数第K个节点
三,代码实现
public int size(ListNode head) { //求出链表的长度
int size = 0;
ListNode cur = head;
while (cur != null) {
size++;
cur = cur.next;
}
return size;
}
public ListNode FindKthToTail(ListNode head, int k) {
if (head == null) { //如果是空链表直接返回null
return null;
}
int size = size(head); //用size方法求出该链表的长度
if (k <= 0 || k > size) {
// k 是非法值
return null;
}
int steps = size - k; //从头开始走steps步数后的节点即为要求节点
ListNode cur = head;
for (int i = 0; i < steps; i++) {
cur = cur.next;
}
return cur;
}