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. };

剑指offer 旋转数组的更多相关文章

  1. 剑指Offer 旋转数组的最小数字

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 ...

  2. 剑指Offer——旋转数组的最小数字

    题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一 ...

  3. 用js刷剑指offer(旋转数组的最小数字)

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  4. 剑指Offer:数组中出现次数超过一半的数字【39】

    剑指Offer:数组中出现次数超过一半的数字[39] 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于这 ...

  5. 《剑指offer》数组中只出现一次的数字

    本题来自<剑指offer> 数组中只出现一次的数字 题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 思路: 思路一:在<剑指of ...

  6. 剑指 Offer 51. 数组中的逆序对 + 归并排序 + 树状数组

    剑指 Offer 51. 数组中的逆序对 Offer_51 题目描述 方法一:暴力法(双层循环,超时) package com.walegarrett.offer; /** * @Author Wal ...

  7. 剑指 Offer 39. 数组中出现次数超过一半的数字 + 摩尔投票法

    剑指 Offer 39. 数组中出现次数超过一半的数字 Offer_39 题目描述 方法一:使用map存储数字出现的次数 public class Offer_39 { public int majo ...

  8. 剑指 Offer 03. 数组中重复的数字

    剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知 ...

  9. 菜鸟刷题路:剑指 Offer 03. 数组中重复的数字

    剑指 Offer 03. 数组中重复的数字 哈希表/set class Solution { public int findRepeatNumber(int[] nums) { HashSet< ...

随机推荐

  1. 关于让input=text,checkbox居中的解决方法

    1.type="text"时一般浏览器与IE6在高度上相差2px,并且内容会显示在左上方.解决办法有两种:1.input框的高度不设置,但要设置padding值 2.不设置padd ...

  2. Python学习笔记_Chapter 4数据保存到文件

    1. What For 将基于内存的数据存储到磁盘上,达到持续存储. 2. HOW 方法一: 将数据写到文件中 常规的处理方式 #file.x被打开的文件,model打开文件的方式 out=open( ...

  3. 1.Date对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. OMCS使用技巧 -- 摄像头及其动态能力

    在开发类似视频聊天的应用时,我们经常需要获取摄像头的相关信息:而在进行视频聊天时,我们可能还希望有一些动态的能力.比如,在不中断视频聊天的情况下,切换一个摄像头.或者修改摄像头采集的分辨率或编码质量等 ...

  5. C++对象模型笔记之程序设计模型

    C++程序设计模型支持三种程序设计模型 1.程序模型(procedural model) 可以理解为过程化模型,就像C一样 2.抽象数据类型模型(ADT) 数据结构教材里有说过,查了下资料也不是很明确 ...

  6. JS跨域解决方式 window.name

    window.name 传输技术,原本是 Thomas Frank 用于解决 cookie 的一些劣势(每个域名 4 x 20 Kb 的限制.数据只能是字符串.设置和获取 cookie 语法的复杂等等 ...

  7. 解决 .NET Core 中 GetHostAddressesAsync 引起的 EnyimMemcached 死锁问题

    在我们将站点从 ASP.NET + Windows 迁移至 ASP.NET Core + Linux 的过程中,目前遇到的最大障碍就是 —— 没有可用的支持 .NET Core 的 memcached ...

  8. 关于oracle数据库(6)约束

    约束类型 1.主键primary key(一般是一个表的标志,所以一个表只能有一个主键:主键不能为空,不能重复) 2.唯一键unique(不能重复) 3.外键foreign key 4.检查约束che ...

  9. 判断一个值是不是DBNull.Value

    C#读取数据库返回DataTable,遍历 DataTable, 在DataRow dr, 假如dr[0]是一个可空的值类型的字段,那么要赋值给C#程序的一个值类型(可空类型变量这里不讨论)变量时, ...

  10. input type="file" 的一些问题

    file可以上传文件,但通常 情况下大家都会需要设置文件上传的格式 上传文件的格式由一个 accept 属性来控制 列如: <input type="file" id=&qu ...