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

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

 
  1. class Solution {
  2. public:
  3. int minNumberInRotateArray(vector<int> rotateArray) {
  4. //常规的遍历方法时间是O(N)的,需要使用二分法,这样对于不重复的数组,就能实现O(logN)的时间
  5. int l=0,r=rotateArray.size()-1;
  6. if(r<0)return NULL;//空数组
  7. int m=0;
  8. while(l<r){
    //当左指针小于右指针的时候,继续二分法
  9. //下面分两种情况讨论:①数组仍然具有旋转数组特性,②已经不是旋转数组了,变回递增数组,直接返回l
  10. if(rotateArray[l]>=rotateArray[r]){
    //等号是为了考虑数组存在重复的情况
  11. m=(l+r)>>1;
  12. if(rotateArray[m]<rotateArray[r])//中间值小于右边,则中间值属于属于右边数组
  13. //那么最小值是在 [l,m]之间
  14. r=m;
  15. else
  16. if(rotateArray[m]>rotateArray[r])//中间值大于右边,中间值属于左边数组
  17. //最小值在(m,r]之间
  18. l=m+1;
  19. else//如果中间值等于右边,无法判断,让l++ 或者让r--
  20. l++;
  21. }
  22. else// 当l 小于r 的时候,l一定是最小值
  23. break;
  24. }
  25. return rotateArray[l];
  26. }
  27. };

转载于:https://www.cnblogs.com/zhxshseu/p/5284972.html

你可能感兴趣的文章
智引IT综合管理解决方案
查看>>
每日学习笔记(20)
查看>>
Java使用Executor执行Callable任务时的几种方法
查看>>
我的友情链接
查看>>
Openfire搭建聊天系统
查看>>
ora-01189故障解决办法
查看>>
开始写博客
查看>>
Oracle认证/维保技术支持服务找重庆思庄
查看>>
Cookie对象常用属性
查看>>
php[6491]: segfault at * rip * rsp * error 6
查看>>
安装Exchange2007邮件系统
查看>>
通过Keepalived实现Redis Failover自动故障切换功能[实践分享]
查看>>
linux 命令 —— cp
查看>>
ASP.NET MVC 3和Razor中的@helper 语法
查看>>
基于mimeTex的数学公式Webservice的部署和实现
查看>>
puppet学习—默认WEBRick安装DashBoard
查看>>
H3C WA2220E-AG 设置本地MAC+PSK认证:mac-and-psk
查看>>
统计字符串、九宫格、编码问题
查看>>
为什么学习python、python的安装
查看>>
使用ClassLoader加载资源详解
查看>>