LeetCode:チェーンテーブルの最後からk番目のノード


タイトル説明:チェーンテーブルを入力し、チェーンテーブルの最下位からk番目のノードを出力します.多くの人の習慣に合うように、本題は1から数え始めます.すなわち、チェーンテーブルの末尾ノードは最後から1番目のノードです.たとえば、チェーンテーブルには6つのノードがあり、先頭ノードから1、2、3、4、5、6の順に値が表示されます.このチェーンテーブルの最後から3番目のノードは4のノードです.
例:
チェーンテーブルを1->2->3->4->5とk=2とする.
チェーンテーブル4->5に戻る.
考え方:ダブルポインタ.最初のポインタはk個のノードを先に進み、2個のポインタは一緒に進み、最初のポインタがチェーンテーブルの末尾に達すると、2番目のポインタはちょうど最後からk番目のノードに進む.
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
     
public:
    ListNode* getKthFromEnd(ListNode* head, int k) {
     
        ListNode *first=head,*second=head;
        int count=0;
        while(first!=NULL){
     
            first=first->next;
            if(count<k)
                count+=1;
            else if(count==k){
     
                second=second->next;
            }
        }
        return second;
    }
};