链表中倒数第k个节点(c++双指针)

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a

双指针做法
时间,空间 O(n)

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead==NULL)
            return NULL;
        ListNode* p = pListHead;
        ListNode* q = p;
        for(int i=0;i<k-1;i++){
            p=p->next;
            if(p==NULL)
                return NULL;
        }
        p=p->next;
        while(p!=NULL){
            p=p->next;
            q=q->next;
        }
        return q;
    }
};
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务