这道题主要考察的是对错误输入的判断。
具体解题思想参考剑指offer 22.
时间和内存消耗以及源代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* getKthFromEnd(struct ListNode* head, int k){
if (head == NULL || k == 0)
{
return NULL;
}
struct ListNode* targethead;
struct ListNode* targetend = head;
for (int i = 1; i < k; i++)
{
targetend = targetend->next;
if (targetend==NULL)
{
return NULL;
}
}
targethead = head;
while (!(targetend->next == NULL))
{
targethead = targethead->next;
targetend = targetend->next;
}
return targethead;
}