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

说明

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

应用

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

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

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

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

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

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

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

相关推荐
lxh01135 分钟前
二叉树中的最大路径和
前端·算法·js
萌>__<新6 分钟前
力扣打卡每日一题————零钱兑换
算法·leetcode·职场和发展
重生之后端学习7 分钟前
238. 除自身以外数组的乘积
java·数据结构·算法·leetcode·职场和发展·哈希算法
yaoxin52112319 分钟前
269. Java Stream API - Map-Filter-Reduce算法模型
java·python·算法
Learner__Q1 小时前
每天五分钟:动态规划-LeetCode高频题_day2
算法·leetcode·动态规划
一韦以航.1 小时前
C【指针】详解(上)
c语言·数据结构·c++·算法
mit6.8242 小时前
固定中间
算法
老马啸西风2 小时前
成熟企业级技术平台 MVE-010-跳板机 / 堡垒机(Jump Server / Bastion Host)
人工智能·深度学习·算法·职场和发展
立志成为大牛的小牛2 小时前
数据结构——五十九、冒泡排序(王道408)
数据结构·学习·程序人生·考研·算法
s09071362 小时前
下视多波束声呐进行测绘作业注意事项
算法·海洋测绘·下视多波束