• 链表中倒数第k个结点


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

    思路一:先遍历整个链表,统计链表的个数,然后总个数-k就是所求的结果

    但是太无脑了

    所以思路二:

    用两个指针, first 和 second

    first先走k-1次,然后second再走,当first 到最后一个,second就是所求的了

     代码:

    // 两个指针,一个在前(先走k-1次),第二个在走
    //当第一个到头了,第二个就是倒数k个
    class Solution {
    public:
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        if(pListHead == nullptr ||k <= 0)
            return nullptr;
        ListNode *first = pListHead;
        ListNode *second = pListHead;
        for(int i = 0; i < k-1; i++)
        {
            if (first->next != nullptr)
                first = first->next;
            else
                return nullptr;
        }
        while(first->next != nullptr)
        {
            first = first->next;
            second = second->next;
        }
        return second;
        
        }
    };
    /*
    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 == nullptr ||k <= 0)
            return nullptr; 
        int num = 1;
        ListNode *p1 = pListHead;
        ListNode *p2 = pListHead;
        while(p1->next != nullptr)
        {
            num++;
            p1 = p1->next;
        }
        int t = num-k;
        if (t < 0)
            return nullptr;
        while(t--)
        {
            p2 = p2->next;
        }
        return p2;
    }
    };
    无脑写法
  • 相关阅读:
    SpringCloud分布式配置中心
    SpringCloud服务降级案列
    SpringCloud断路器(Hystrix)
    SpringCloud服务过滤filter
    SpringCloud路由网关Zuul
    SpringCloud微服务实现生产者消费者+ribbon负载均衡
    SpringCloud微服务的Eureka
    忘记MySQL密码以及无法登陆等解决办法
    MySQL备份
    实现两个MySQL数据库之间的主从同步
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12493016.html
Copyright © 2020-2023  润新知