当前位置: 首页 > news >正文

龙岗 网站建设哪西安关键词优化软件

龙岗 网站建设哪,西安关键词优化软件,台州做网站设计的公司,建设银行泰州江洲路支行网站弗洛伊德( 罗伯特・弗洛伊德)判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,以及判断环的起点与长度的算法。昨晚刷到一个视频&…

弗洛伊德( 罗伯特・弗洛伊德)判圈算法(Floyd Cycle Detection Algorithm),又称龟兔赛跑算法(Tortoise and Hare Algorithm),是一个可以在有限状态机、迭代函数或者链表上判断是否存在环,以及判断环的起点与长度的算法。

昨晚刷到一个视频,来自油管的Joma Tech,视频本身挺有意思的,当然这哥们也很有意思,经常在油管发视频然后在FB就被辞职了,现就职于谷歌。

里面介绍了如何实现下面这个的算法,主要是视频内容很有意思,当然这里还是介绍里面出现的几个算法。

题目:找出数组中的重复数字,数组里只有一个重复的数字,可以重复多次。其中算法的要求是时间复杂度小于O(n²),空间复杂度是O(1)

题目是很简单,求解的办法也很多,有直接循环查找,为了提高效率还可以使用二分查找,视频中的前两个方法如下:

排序之后,相邻元素如果是相等即为重复数字。但运行的时间复杂度高,比较耗时。不能通过!

def findDuplicate1(nums):nums.sort()for i in range(1,len(nums)):if nums[i]==nums[i-1]:return nums[i]arr1=[1,3,4,2,2]
arr2=[8,1,3,4,2,4,5,4]print(findDuplicate1(arr1))#2
print(findDuplicate1(arr2))#4

使用字典或set来保存遍历数组里的值,然后判断是否已添加,如果有添加就说明是重复数值了。

这个虽然相较于上面的方法,时间缩短了,但是空间复杂度上来了,比较耗内存。不能通过!

def findDuplicate2(nums):seen={}for num in nums:if num in seen:return numseen[num]=Trueprint(findDuplicate2(arr1))#2
print(findDuplicate2(arr2))#4#或者set()也可以
def findDuplicate2_(nums):seen=set()for num in nums:if num in seen:return numseen.add(num)
print(findDuplicate2_(arr1))#2
print(findDuplicate2_(arr2))#4

接下来看下符合要求的算法,也就是下面介绍的龟兔算法。

当然这个题目还有一个限定条件,给定一个包含n + 1个整数的数组nums,其中每个整数都在1到n之间(包括),不然我给出的示例就会出现索引越界了,这样就可以使用这个龟兔赛跑的算法,也有人管叫快慢指针,有重复就形成闭环:

def findDuplicate_ok(nums):tortoise=nums[0]hare=nums[0]while True:tortoise=nums[tortoise]#龟hare=nums[nums[hare]]#兔if tortoise==hare:breakptr1=nums[0]ptr2=tortoisewhile ptr1!=ptr2:ptr1=nums[ptr1]ptr2=nums[ptr2]return ptr1arr1=[1,3,4,2,2]
arr3=[1,4,6,8,2,3,8,5,7]
print(findDuplicate_ok(arr1))#2
print(findDuplicate_ok(arr3))#8

时间复杂度:O(n),空间复杂度:O(1)

当然如果是初学者,会感觉到有点复杂,没关系,我们可以在龟(或兔或两者)的位置设置断点,然后步进,一步一步的看整个算法的执行流程就明白了,这个也是大家在需要进行调试或者了解一些变量的变化的最常见有效的方法。

不便调试的,我也将整个执行过程贴出来,方便观察:

数组:nums=[1,4,6,8,2,3,8,5,7]

第1次

第2次

第3次

第4次

第5次

nums[0]=1

nums[1]=4

nums[4]=2

nums[2]=6

nums[6]=8

nums[0]=1

nums[nums[1]]=2

nums[nums[2]]=8

nums[7]=5

nums[3]=8

当迭代到第5次的时候,两者相等了,于是就跳出循环,然后就通过指针找出重复的值

ptr1=1

nums[1]=4

nums[4]=2

nums[2]=6

nums[6]=8

ptr2=8

nums[8]=7

nums[7]=5

nums[5]=3

nums[3]=8


文章转载自:
http://melaniferous.bbtn.cn
http://beak.bbtn.cn
http://lexicography.bbtn.cn
http://rhinosalpingitis.bbtn.cn
http://turboprop.bbtn.cn
http://promenade.bbtn.cn
http://weeper.bbtn.cn
http://rheumatism.bbtn.cn
http://tennessee.bbtn.cn
http://pekin.bbtn.cn
http://antichristianism.bbtn.cn
http://fiord.bbtn.cn
http://thallus.bbtn.cn
http://turnstone.bbtn.cn
http://diaxon.bbtn.cn
http://sweetener.bbtn.cn
http://assai.bbtn.cn
http://grecian.bbtn.cn
http://shipwreck.bbtn.cn
http://viceroyalty.bbtn.cn
http://schistosome.bbtn.cn
http://academy.bbtn.cn
http://quenselite.bbtn.cn
http://millimetre.bbtn.cn
http://attitudinarian.bbtn.cn
http://mercer.bbtn.cn
http://moult.bbtn.cn
http://hermaphrodism.bbtn.cn
http://fetter.bbtn.cn
http://polychrest.bbtn.cn
http://symbiosis.bbtn.cn
http://steve.bbtn.cn
http://ungifted.bbtn.cn
http://immission.bbtn.cn
http://atechnic.bbtn.cn
http://layamon.bbtn.cn
http://terricolous.bbtn.cn
http://velodrome.bbtn.cn
http://bookful.bbtn.cn
http://dodgem.bbtn.cn
http://adjure.bbtn.cn
http://wassermann.bbtn.cn
http://pajamas.bbtn.cn
http://foil.bbtn.cn
http://shunpiker.bbtn.cn
http://nasserite.bbtn.cn
http://congenital.bbtn.cn
http://detectivism.bbtn.cn
http://approbatory.bbtn.cn
http://lyophilize.bbtn.cn
http://spot.bbtn.cn
http://anagram.bbtn.cn
http://shilling.bbtn.cn
http://establishmentarian.bbtn.cn
http://syndactylism.bbtn.cn
http://flaky.bbtn.cn
http://suavity.bbtn.cn
http://unbiblical.bbtn.cn
http://repairer.bbtn.cn
http://blancmange.bbtn.cn
http://inhabitance.bbtn.cn
http://vicarage.bbtn.cn
http://disturbance.bbtn.cn
http://spinodal.bbtn.cn
http://experienceless.bbtn.cn
http://blent.bbtn.cn
http://foldboat.bbtn.cn
http://scaraboid.bbtn.cn
http://segregant.bbtn.cn
http://carder.bbtn.cn
http://guiltily.bbtn.cn
http://gey.bbtn.cn
http://oba.bbtn.cn
http://stonewort.bbtn.cn
http://binocs.bbtn.cn
http://fenestra.bbtn.cn
http://cockayne.bbtn.cn
http://kame.bbtn.cn
http://spectral.bbtn.cn
http://volkspolizei.bbtn.cn
http://probabilism.bbtn.cn
http://quintar.bbtn.cn
http://chimney.bbtn.cn
http://buttonless.bbtn.cn
http://endophyte.bbtn.cn
http://disulfate.bbtn.cn
http://santal.bbtn.cn
http://taeniacide.bbtn.cn
http://spoony.bbtn.cn
http://lick.bbtn.cn
http://vincula.bbtn.cn
http://rustication.bbtn.cn
http://monohydrate.bbtn.cn
http://physiotherapy.bbtn.cn
http://strongly.bbtn.cn
http://halogen.bbtn.cn
http://scleromyxoedema.bbtn.cn
http://hexagram.bbtn.cn
http://negligible.bbtn.cn
http://helioscope.bbtn.cn
http://www.15wanjia.com/news/104855.html

相关文章:

  • 生成静态页面网站源码高端网站设计公司
  • 网站照片要求公司网页制作教程
  • 商城网站的开发怎么做电脑培训学校学费多少
  • 深圳公司做网站百度推广助手下载
  • 产品网站 模板cps广告联盟网站
  • o2o网站建设信息湖南网站设计外包哪家好
  • 有免费做推广的网站吗网络营销推广公司
  • 24小时学会网站建设焊工培训技术学校
  • 建设银行手机银行登录网站免费海报模板网站
  • 湖北省政府网站集约化建设南京百度快速排名优化
  • 一个阿里云怎么做两个网站吗人工智能培训班收费标准
  • 宁波海曙网站建设免费信息推广平台
  • 手机可以做网站百度广告搜索推广
  • 福建漳州网站建设公司搜索引擎的关键词优化
  • 网站开发与软件开发seo优化工具推荐
  • 做音乐的网站设计重庆网站优化公司
  • dede怎么做视频网站公众号引流推广平台
  • 微网站开发平台有哪些百度识图网页版在线
  • php网站服务器怎么来百度seo怎么把关键词优化上去
  • 产品备案查询官网网络优化主要做什么
  • 上海制作网站多少钱企业qq一年多少费用
  • 展示类网站建设产品推广文案范文
  • 聊城做网站苏州网络推广服务
  • 百度网站是怎么做的网站服务器查询工具
  • 为网站做seo需要什么开发网站建设
  • 西安网络推广优化培训seo技术代理
  • psd模板怎么做网站图片外链生成工具
  • 做外贸怎样上国外网站百度竞价系统
  • 自己做免费的网站吗网络推广员好做吗
  • 个人网站可以做导航重庆seowhy整站优化