数据结构之“快慢指针”

一、快慢指针

快慢指针是解决链表环问题的一个常见技巧
在这个方法中,我们设置两个指针,一个快指针(每次移动两步)和一个慢指针(每次移动一步)

二、“链表的中间结点”

1、题目:

在这里插入图片描述

2、解题思路:

通过快慢指针找到中间节点,快指针每次走两步,慢指针每次走一步,当快指针走到结尾的时候,慢指针正好走到中间位置

3、代码实现:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* middleNode(struct ListNode* head) {
    struct ListNode *fast;
    struct ListNode *slow;
    fast = slow = head;
    while(fast && fast->next)
    {
        slow = slow->next;
        fast = fast->next->next;
    }
    return slow;
}

4、测试用例:

在这里插入图片描述

三、“环形链表”

1、题目:

在这里插入图片描述

2、解题思路:

定义快慢指针fast,slow, 如果链表确实有环,fast指针一定会在环内追上slow指针

3、代码实现:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
bool hasCycle(struct ListNode *head) {
    if(head == NULL || head->next == NULL)
    {
        return false;
    }
    struct ListNode *fast;
    struct ListNode *slow;
    fast = head->next;
    slow = head;
    while(slow != fast)
    {
        if(fast == NULL || fast->next == NULL)
        {
            return false;
        }
        slow = slow->next;
        fast = fast->next->next;
    }
    return true;
}

4、测试用例:

在这里插入图片描述

微语:迎着扑面而来的风,点点星光,以及街道两边那道无限往外延伸、延至天边的光

相关推荐

  1. 数据结构快速排序

    2024-04-30 08:12:03       33 阅读
  2. 数据结构快速排序

    2024-04-30 08:12:03       17 阅读
  3. 数据结构和算法笔记3:双指针法(快慢指针

    2024-04-30 08:12:03       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-30 08:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-30 08:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-30 08:12:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-30 08:12:03       20 阅读

热门阅读

  1. Ajax 解决浏览器缓存问题原理和例子

    2024-04-30 08:12:03       11 阅读
  2. 指数分布、瑞利分布和Nakagami-m的联系

    2024-04-30 08:12:03       11 阅读
  3. 在Mac上使用国内源安装 homebrew

    2024-04-30 08:12:03       11 阅读
  4. elementUI之el-select选择器赋值为空后无法选中回显

    2024-04-30 08:12:03       8 阅读
  5. 介绍一个在数据分析中常用的函数:data.iloc[]

    2024-04-30 08:12:03       14 阅读
  6. Tomcat Bootstrap init()

    2024-04-30 08:12:03       11 阅读
  7. CAPM模型特点

    2024-04-30 08:12:03       9 阅读
  8. Google云平台(Google Cloud Platform,简称GCP)

    2024-04-30 08:12:03       14 阅读
  9. Spring Boot面试知识点总结(经典15问)

    2024-04-30 08:12:03       12 阅读
  10. 2024.4.29力扣每日一题——将矩阵按对角线排序

    2024-04-30 08:12:03       12 阅读