链表中第K个节点

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/886370fe658f41b498d40fb34ae76ff9

这道题并不难, 之前考研的时候就做过。 使用双指针,就可以做到。

判断边界值,是这道题需要注意的地方。 pHead为空, K输入不合法(K<0或者 K超过了链表的长度)

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param pHead ListNode类
     * @param k int整型
     * @return ListNode类
     */
    ListNode* FindKthToTail(ListNode* pHead, int k) {
        // write code here
        if(pHead==nullptr)  return nullptr;
        if(k<0)  return nullptr;
        ListNode *first=pHead;//双指针中的第一个指针
        ListNode *last=pHead;
        for(int i=0;i<k;i++){
            if(last == nullptr)  return nullptr;
            last=last->next;
        }
        while(last != nullptr){
            last=last->next;
            first=first->next;
        }
        return first;

    }
};
全部评论

相关推荐

牛牛不会牛泪:脉脉太多这种了,纯水军
点赞 评论 收藏
分享
用微笑面对困难:除了美国之外,剩下两个地方是不是买单程票就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务