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

说明

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

应用

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

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

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

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

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

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

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

相关推荐
慕容青峰2 分钟前
牛客小白月赛 103 C 题题解
c++·算法·sublime text
小龙报3 分钟前
【算法通关指南:算法基础篇(四)】二维差分专题:1.【模板】差分 2.地毯
c语言·数据结构·c++·深度学习·神经网络·算法·自然语言处理
立志成为大牛的小牛4 分钟前
数据结构——五十八、希尔排序(Shell Sort)(王道408)
数据结构·学习·程序人生·考研·算法·排序算法
代码游侠10 分钟前
学习笔记——文件I/O
linux·数据库·笔记·学习·算法
青铜发条14 分钟前
【Matlab】常用函数总结
算法·matlab
Han.miracle22 分钟前
优选算法-004 盛最多水的容器
数据结构·算法
Knight_AL24 分钟前
布隆过滤器参数深度解析:如何根据误判率计算位数组大小与哈希函数数量
算法·哈希算法
赵得C38 分钟前
软件设计师前沿考点精讲:新兴技术与性能优化实战
java·开发语言·分布式·算法·设计模式·性能优化
小白程序员成长日记1 小时前
2025.12.09 力扣每日一题
数据结构·算法·leetcode