Acwing刷题

输入一个链表,输出该链表中倒数第 kk 个结点。

注意:

  • k >= 1;
  • 如果 kk 大于链表长度,则返回 NULL;

数据范围

链表长度 [0,30][0,30]。

样例

输入:链表:1->2->3->4->5 ,k=2

输出:4




/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* findKthToTail(ListNode* head, int k) {
        int n=0;
        for(auto p=head;p;p=p->next) n++;
        if(n<k) return NULL;
        auto p=head;
        while(n-k){
            p=p->next;
            n--;
        }
        // for(int i=0;i<n-k;i++) p=p->next;
        return p;
    }
};

/*int n = 0;
        for (auto p = head; p; p = p->next) n ++ ;
        if (n < k) return nullptr;
        auto p = head;
        for (int i = 0; i < n - k; i ++ ) p = p->next;
        return p;*/mia

  下面是之前的尝试,属于失败案例

posted on 2022-04-19 18:34  付治齐吖  阅读(18)  评论(0)    收藏  举报