![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 79
城边小河
菜鸟一枚,每天都要努力学习
展开
-
Java二分算法解析--基本框架及寻找左右端点
二分算法是一种分而治之的思想,这个算法的思想是挺简单的,但是细节部分,比如二分的边界问题十分让人头疼,在处理具体问题时候并不是单纯套一下模板。 正如KMP算法发明者说的一句话: Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky... 这句话的理解就是:思路很简单,细节是魔鬼。 算法介绍 下面为百度百科的介绍,写的很严谨: &nbs原创 2021-05-16 19:54:01 · 231 阅读 · 1 评论 -
Floyd判圈算法(龟兔赛跑算法)
问题:如何检测一个链表是否有环呢?如果有,那么怎么确定环的起点?如何确定环的长度? 时间复杂度:O(n) 空间复杂度:O(1) 好比两个人在赛跑,A速度快,B速度慢,经过一定时间后,A总会和B相遇,且相遇时,A跑过的总距离减B跑过的总距离一定是圈长的n倍。 Floyd使用两个指针,一个慢(龟)指针每次前进一步,一个快指针(兔)每次前进两步(两步或多步效果是等价的,只要一个比另一个快就行。但是随着移动步数的增加,算法的复杂度可能增加)。如果两者在链表头以外(不包含开始情况)的某一点相遇(即相等),那么说明原创 2021-05-13 09:37:30 · 313 阅读 · 0 评论