基本思路
快慢指针。慢指针指向第k个节点时,快指针指向最后一个节点,快指针比慢指针快k-1步。快指针的next为null判断结束。
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* getKthFromEnd(ListNode* head, int k)
{
ListNode *fast = head;
for (int i = k - 1; i > 0; i--)
fast = fast->next;
ListNode *slow = head;
while (fast->next)
{
slow = slow->next;
fast = fast->next;
}
return slow;
}