输入一个链表,输出该链表中倒数第k个结点。
package 牛客;
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
定义两个都指向头指针的指针p先走k-1步,然后q和p一起走,p走完,q即为倒数第k个节点。
{1 2 3 4 5}2
p走到1 q开始走
p走完 q为4
package 牛客;
public class 链表中倒数第k个结点 {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k<=0){
return null;
}
ListNode p=head;
ListNode q=head;
int count=0;
int tmp=k;
while (p != null) {
p = p.next;
count++;
if (k <1) {
q = q.next;
}
k--;
}
if (count<tmp) {
return null;
}
return q;
}
}