/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { // public: // /** // * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 // * // * // * @param pHead ListNode类 // * @param k int整型 // * @return ListNode类 // */ // ListNode* FindKthToTail(ListNode* pHead, int k) { // // write code here // } // }; public: ListNode* FindKthToTail(ListNode* pHead, int k) { if (pHead == NULL) return NULL; ListNode* first = pHead; ListNode* second = pHead; //第一个指针先走k步 while (k-- > 0) { if (first == NULL) return NULL; first = first->next; } //然后两个指针在同时前进 while (first != NULL) { first = first->next; second = second->next; } return second; } };