题目描述
输入一个链表,输出该链表中倒数第k个结点。
分析
定义两个指针,一次遍历即可,时间复杂度为
初始化两个指针均指向链表头节点。第一个指针遍历整个链表,遍历过程中,k--,这样当k<1时,第二个指针开始从头遍历,当第一个指针遍历结束时,第二个指针正好遍历到该链表中倒数第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) {
ListNode p=head;
ListNode pre=head;
int count=0;
int a=k;
while(p!=null){
p=p.next;
count++;
if(k<1){
pre=pre.next;
}
k--;
}
if(count<a){
return null;
}
return pre;
}
}
网友评论