返回一个链表的倒数第k个节点
题目描述
输入一个链表,输出该链表中倒数第k个结点。
如果该链表长度小于k,请返回空。

题目分析
首先明确,一个链表中,倒数的+顺数的长度等于链表总长度,所以可以设置两个指针,一个先走K步,剩下的到链表的末尾要走的步数就是倒数第k个节点,需要从头开始走的步数。所以我们可以画出如下图

根据这个逻辑,我们设置两个指针,其中一个先走k步(这个k就是我们要求的倒数第几个的这个几),然后在用一个指针同时跑,然后第一个走到结尾,第二个指针的位置对应的数字就是我们要求的
public ListNode FindKthToTail (ListNode pHead, int k) {
// write code here
//定义一个开始指针
ListNode first = pHead;
for(int i = 0;i<k;i++){
if(first==null){
return first; //这里是如果节点为空就返回first,这个时候的first就是空
}
first = first.next;
}
//定义第二个指针
ListNode second = pHead;
//同时移动,当第一个指针移动到最后,第二个指针的位置就是我们要求的值
while(first!=null){
first = first.next;
second = second.next;
}
return second;
}
本文来自博客园,作者:Diamond-fz,转载请注明原文链接:https://www.cnblogs.com/fzstudy/p/14665033.html

浙公网安备 33010602011771号