首页 > 其他 > 详细

剑指 offer set 3 旋转数组的最小数字

时间:2014-02-23 13:31:23      阅读:335      评论:0      收藏:0      [点我收藏+]

总结

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)

剑指 offer set 3 旋转数组的最小数字

原文:http://www.cnblogs.com/xinsheng/p/3561478.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!