算法基础------快慢指针

说明

快慢指针上的快慢是指移动步数的长短,也就是每次向前移动速度的快慢。比如,指定快指针每次沿着链表向前移动2步,指定慢指针每次沿着链表向前移动1步。

应用

1、判断单链表是否为循环链表

首先设置快慢指针的起点为链表的头结点,快指针每次向前移动2步,慢指针每次向前移动1步。如果改链表为循环链表,则快指针会在不久后追上慢指针;如果是单链表,则快指针会先到达链表的末尾。利用快慢指针解决这个问题还有一个好处就是不需要知道链表的长度。

2、有序链表中寻找中位数

按快指针走两步,慢指针走一步的结构。快指针的移动速度是慢指针的2倍,所以快指针到达链表末尾时,慢指针到达链表中点。

有两种情况要分开考虑,即链表为偶数长度时,和链表为计数长度时(head节点仍然存储数据)。

当链表为偶数时,快指针只能到达链表的倒数第二个节点;则慢指针的魏志伟上中位数;因此返回(上中位数+下中位数)/ 2;

当链表为奇数时,快指针能到达链表的最后一个节点;则慢指针的位置就是中位数。

相关推荐
hummhumm20 分钟前
第 10 章 - Go语言字符串操作
java·后端·python·sql·算法·golang·database
Jeffrey_oWang24 分钟前
软间隔支持向量机
算法·机器学习·支持向量机
算法歌者1 小时前
[算法]入门1.矩阵转置
算法
用户8134411823611 小时前
分布式训练
算法
林开落L1 小时前
前缀和算法习题篇(上)
c++·算法·leetcode
远望清一色1 小时前
基于MATLAB边缘检测博文
开发语言·算法·matlab
tyler_download1 小时前
手撸 chatgpt 大模型:简述 LLM 的架构,算法和训练流程
算法·chatgpt
SoraLuna2 小时前
「Mac玩转仓颉内测版7」入门篇7 - Cangjie控制结构(下)
算法·macos·动态规划·cangjie
我狠狠地刷刷刷刷刷2 小时前
中文分词模拟器
开发语言·python·算法
鸽鸽程序猿2 小时前
【算法】【优选算法】前缀和(上)
java·算法·前缀和