//旋转数组的最小数字
//把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。   例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
//思路:两个前后指针进行比较;
//先找到分界点;分三种情况,第一种就是前面中间和后面的元素相等,只能顺序查找;
//第二种,中间元素位于前面的递增数组;第三种情况,中间元素位于后面的数组class Solution {
public:int minNumberInRotateArray(vector<int> rotateArray){int size = rotateArray.size();if (size == 0){return 0;}//前后两个指针向中间靠拢int left = 0;int right = size - 1;int mid = 0;//旋转的条件:rotateArray[left] >= rotateArray[right]while (rotateArray[left] >= rotateArray[right]){//分界点if (right - left == 1){mid = right;break;}//第一种情况--顺序查找mid = (right - left) / 2;if (rotateArray[left] == rotateArray[right] && rotateArray[left] == rotateArray[mid]){int tmp = rotateArray[left];for (int i = left+1; i < right; i++){if (rotateArray[i] < tmp){tmp = rotateArray[i];}}return tmp;}//第二种情况-在数组的左侧if (rotateArray[mid] >= rotateArray[left]){left = mid;}//第三种情况-在数组的右侧else{right = mid;}}return rotateArray[mid];}
};

转载于:https://www.cnblogs.com/maleyang/articles/7399567.html

06旋转数组的最小数字相关推荐

  1. 剑指Offer #06 旋转数组的最小数字(二分查找)| 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:旋转数组的最小数字 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小 ...

  2. 剑指offer——06旋转数组的最小数字(Python3)

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

  3. 剑指offer:面试题11. 旋转数组的最小数字

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

  4. 剑指offer_第6题_旋转数组的最小数字

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

  5. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

  6. 剑指 Offer 11. 旋转数组的最小数字 简单

    剑指 Offer 11. 旋转数组的最小数字 题目 解题思路 方法(一)直接遍历法 方法(二)二分查找法 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组 ...

  7. LeetCode-剑指 Offer 11. 旋转数组的最小数字

    剑指 Offer 11. 旋转数组的最小数字 思路一:先排序,返回第一个数组值 class Solution {public:int minArray(vector<int>& n ...

  8. 剑指offer 11. 旋转数组的最小数字(很详细!)

    剑指offer 11. 旋转数组的最小数字 题目 解题思路 代码 题目 解题思路 一开始,我们就能直接想到,数组找最小值,那么不轻轻松松直接遍历一遍,用一个变量记录最小值,然后直接返回不就完事了? 但 ...

  9. 算法练习day20——190411(重建二叉树、斐波那契数列、跳台阶、矩形覆盖、变态跳台阶、旋转数组的最小数字、矩阵中的路径)

    1.重建二叉树 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. preorder = [3,9,20,15,7].inorder = [9 ...

最新文章

  1. Maven3.x 插件开发入门
  2. css 缩放_【开发小技巧】06—如何使用CSS在鼠标悬停时缩放图像?
  3. LeetCode 1216. 验证回文字符串 III(DP)
  4. flashAndPHP 简单交互
  5. 全球自动驾驶第一梯队“成团出道”,谁站 C 位?
  6. 招聘网站数百万条敏感数据泄露,简历、×××扫描件统统曝光
  7. 拓端tecdat|R语言中的copula GARCH模型拟合时间序列并模拟分析
  8. idea + tomcat中文乱码处理
  9. Python 多重共线性检验
  10. 2021全国特种设备-G3锅炉水处理模拟考试题库一[安考星]
  11. TOMCAT HTPPS
  12. 微信公众号怎么为用户提供文件下载功能
  13. 懒癌治疗仪 - 写在前面
  14. 网络工程师眼中的自动化运维
  15. windows 下安装软件乱码
  16. 在线流程图和思维导图开发技术详解(五)
  17. 中国为什么没有根域名服务器
  18. 笛卡尔积、除、(外)连接等重要关系代数求解方法 概述
  19. 2020蓝天杯论文评比系统_我所师生参加安徽省药理学会2020年学术年会
  20. 流畅的Python读书笔记

热门文章

  1. JQuery事件——鼠标事件
  2. 针对Mysql数据库服务器的优化
  3. 应用交付脚本工具在HTTP服务中的应用
  4. Atcoder Grand Contest 010 B - Boxes 差分
  5. 多学一点(五)——在Linux下安装配置Apache
  6. 观察者模式--java jdk中提供的支持
  7. VMware vCenter Server安装
  8. 【开发必知】基本缓存概念
  9. 在debian上安装vmware tools的问题
  10. 在Java中Vector和ArrayList的区别