Definition for singly-linked list.
struct ListNode {
int val;
struct ListNode *next;
};
typedef struct ListNode ListNode;
int kthToLast(struct ListNode* head, int k){
ListNode* fast,* slow;
fast=slow=head;
while(k--)
{
fast=fast->next;
}
while(fast)
{
slow=slow->next;
fast=fast->next;
}
return slow->val;
}
用快慢指针的方法,先用while循环让fast指针走出去k个。然后在让两个指针一起走,判断条件为fast指针不为空。题中给的k为2,当fast指针走到最后一个时,slow指针刚好走到倒数第二个节点。