BM8 链表中倒数最后k个结点
输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
数据范围:0≤n≤10^5 ,0≤ai<=10^9
要求:空间复杂度 O(n),时间复杂度 O(n)
进阶:空间复杂度 O(1),时间复杂度 O(n)
解法
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
typedef struct ListNode* pnode;
struct ListNode* FindKthToTail(struct ListNode* pHead, int k ) {
// write code here
if(!k||!pHead)return NULL;
int i = 1 ;
int j = i;
pnode p = pHead;
pnode q = pHead;
while(q->next)
{
j++;
q=q->next;
}
if(j<k)return NULL;
i = j-k;
while(i-->0)
{
p = p->next;
}
return p ;
}