博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 offer set 3 旋转数组的最小数字
阅读量:5090 次
发布时间:2019-06-13

本文共 373 字,大约阅读时间需要 1 分钟。

总结

1. 没有重复元素的旋转数组可用 logn 时间内求出结果. 解法有两个步骤, 先是求出发生旋转的点(以 array[0] 为支点求得), 然后用正常的二分查找给出结果

2. 有重复元素元素的旋转数组时间复杂度最差会是 o(n). 讨论下复杂度上升的原因

 

对于没有重复的旋转数组

4  5  6  1  2  3

pivot = 4

mid = num[2] (5) 

mid > pivot ==> 旋转点在 num 右边

以此为根据找到支点

而假如旋转数组有重复元素, 比如

 

1  0  1  1  1

pivot = 1

mid = num[2] = 1

mid == pivot ==> 无法进行二分了, 只能顺序遍历, 时间复杂度上升到 o(n)

 

转载于:https://www.cnblogs.com/xinsheng/p/3561478.html

你可能感兴趣的文章
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>