链表——求链表中倒数第k个节点

链表中倒数第k个结点

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

思路:
①我第一次做这题,选择是将整个链表反转,再输出第k个,但是有个问题就“第k个节点”的意思是从第k个到最后的所有链表。
例:1->2->3->4的第二个节点是2->3->4。
所以反转链表不行,但是如果是求第k个节点的值,就没有问题了。
②采用快慢指针
这种方法以前在做求链表中间节点时遇到过。
设定两个指针,一个比另一个快k个,这样,当fast到达尾(null)时,另一个就处于倒数k个。

/*
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||k<=0) return nullptr;
       ListNode* fast = pListHead;
        ListNode* slow = pListHead;
        while(k--)
        {
            if(fast)
            {
                fast=fast->next;
            }
            else
            {
                return nullptr;
            }
        }
        while(fast)
        {
            slow = slow->next;
            fast = fast->next;
        }
        return slow;

    }
};```
全部评论

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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