LeetCode:141和142,环形链表之追及相遇和快慢指针的运用

这两个题是相关联的,主要做法为哈希和快慢指针,当然像博主我,不看解析只会O(n^2)的暴力遍历,太惨了,不过,快慢指针还是很好理解的,是一个追及的问题,

此为第二版。

                     第一版时间2024.2.2,

                     第二版时间2024.2.4:修改内容为原理图上的对于,快指针三步和慢指针的说明

目录

题目:

​编辑 快慢指针解法原理:

代码LeetCode:141: 

每日表情包:


题目:

 快慢指针解法原理:

第二版补充 (关于快指针走三步,慢指针走一步的思考图):

图源24年-02月03日--链表OJ+栈/2-3--上午.png · 比特杭哥/112期 - 码云 - 开源中国 (gitee.com)

代码LeetCode:141: 

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    struct ListNode* pfast = head, * pslow = head;
    while(pfast && pfast->next){
        pfast = pfast->next->next;
        pslow = pslow->next;
        if(pfast == pslow){
            return true;
        }
    }
    return false;
}

代码LeetCode:142:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode *detectCycle(struct ListNode *head) {
    struct ListNode* pfast = head, * pslow = head;
    while(pfast && pfast->next){
        pfast = pfast->next->next;
        pslow = pslow->next;
        if(pfast == pslow){
            while(pfast != head){
                pfast = pfast->next;
                head = head->next;
            }
            return head;
        }
    }
    return NULL;
}

每日表情包:

点点赞吧 ~ 可怜可怜孩子。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值