题目:

把一个数组最开始的若干个元素搬到数组的末尾,我们称之位数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3 4 5 1 2}为{1 2 3 4 5}的一个旋转,该数组的最小值为1。

注意点:
1 原数组以升序排序。
2 需要判断旋转数组后数组又以升序进行排序,即旋转的次数等于数组长度。
3 如果pData[begin] = pData[middle] = pData[end], 需要通过遍历来获取最小值。比如数组{0 1 1 1 1}的旋转数组{1 1 1 0 1}。

代码实现:

bool GetMinDataInCircleArray(int* pData, int size)
{if (nullptr == pData || size < 0) return INT_MIN;if (pData[0] < pData[size - 1]) return pData[0];int begin = 0;int end = size - 1;while (begin < end){if (end - begin == 1) return pData[end]; int middle = begin + (end - begin) / 2;if (pData[begin] == pData[middle] && pData[middle] == pData[end]) return FindMinBySequence(pData, size);else if (pData[middle] >= pData[begin]) begin = middle;else if (pData[middle] <= pData[end]) end = middle;}return INT_MIN;
}

08. 旋转数组的最小数字(C++版本)相关推荐

  1. 【剑指offer-Java版】08旋转数组的最小数字

    旋转数组最小数字:暴力方法就是遍历-有效的方法是二分,但是存在失效的情况 几个特别的测试用例需要注意下: 数组中含有多个相同的数字 最小数字就是第一个 public class _Q08 {publi ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. 《剑指offer》— JavaScript(6)旋转数组的最小数字

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

最新文章

  1. Spring 5.0 GA版本发布,支持JDK9及反应式编程
  2. ffmpeg 命令_Qt音视频开发11-ffmpeg常用命令
  3. matlab提示未定义wc,WooCommerce 教程:修复致命错误调用未定义的函数wc_get_order() - WooCommerce 微站...
  4. web developer tips (45):如何改变动态数据文件夹的位置
  5. 文件类常用方法 c# 1614531951
  6. python写脚本入门-学习Python的教程?:python 脚本菜鸟教程
  7. 到华为去,到AI最前沿去~ 华为杭州研究所欢迎您!
  8. 基于Android的rgb七彩环颜色采集器
  9. 计算机网络class1(概念、组成、功能和分类)
  10. 【java】打印一个序列,第一项和第二项都是1,以后的每一项都是前面两项的和。
  11. 【物联网项目系列】——使用netty框架做一个环保hj212协议即时通讯工具(接收解析处理实时数据)
  12. Layui表单验证及提交
  13. cmd命令行四种弹窗命令
  14. Scrapy + selenium + 超级鹰验证码识别爬取网站
  15. java复数类实部_Java编写一个复数类Complex,具有实部、虚部成员变量,可以完成加、减、乘、除和获得实部和虚部的方法...
  16. html提取excel指定单元格数据,怎样从很多的表格中提取指定单元格数据
  17. 流利说英语level4_英语流利说懂你英语 Level4 Unit1 Part1 Vocabulary
  18. 使用OneNote多人分布式共享
  19. MATLAB 中contour的应用
  20. background-color覆盖范围

热门文章

  1. java多线程和长连接,三方转换通信的实践(2)——数据库端服务程序
  2. Node.js 教程第五篇——request
  3. Data crossstore between Mongo and JPA
  4. 程序江湖:第五章 机会是一种困扰
  5. 13.看板方法---使用两层系统扩展看板
  6. 1.Jenkins 2 权威指南 --- 简介
  7. 43.访问控制过滤器(Access Control Filter)
  8. 计算机中的bit byte(B) mb gb 的关系
  9. 洛谷 P4344 [SHOI2015]脑洞治疗仪
  10. Windows系统命令整理-Win10