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

  • 题目
  • 解题思路
    • 方法(一)直接遍历法
    • 方法(二)二分查找法

题目

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

示例 1:输入:[3,4,5,1,2]
输出:1
示例 2:输入:[2,2,2,0,1]
输出:0

解题思路

方法(一)直接遍历法

时间复杂度O(n)
代码:

class Solution {public:int minArray(vector<int>& numbers) {int min=0;for(int i=1;i<numbers.size();i++){if(numbers[i]<numbers[min]) min=i;}return numbers[min];}
};

方法(二)二分查找法

时间复杂度O(logn)
解题思路:

  1. i m j分别代表最左,中,最右的值。
  2. 判断 m跟j的大小
    如果m>j,则说明mj不在同一个序列里,所以i=m+1;
    如果m<j,则说明mj在右边的序列里,最小值只能够在左边或者m,所以j=m;
    如果m=j,则不能判断m在哪个序列,所以j–后继续判断。
  3. 最后输出m
class Solution {public:int minArray(vector<int>& numbers) {int m;int i=0;int j=numbers.size()-1;while(i<j){m=(i+j)/2;if(numbers[m]>numbers[j]) i=m+1;else if(numbers[m]<numbers[j]) j=m;else j--;}return numbers[i];}
};

剑指 Offer 11. 旋转数组的最小数字 简单相关推荐

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

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

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

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

  3. 【LeetCode】剑指 Offer 11. 旋转数组的最小数字

    [LeetCode]剑指 Offer 11. 旋转数组的最小数字 文章目录 [LeetCode]剑指 Offer 11. 旋转数组的最小数字 一.遍历 二.二分法 总结 一.遍历 算法步骤: 遍历数组 ...

  4. 【剑指 Offe】剑指 Offer 11. 旋转数组的最小数字

    目录标题 算法汇总 题目 关键点 代码 1.解体方法 - 二分法 思路 代码 时间和空间复杂度 2.解题方法,如暴力法 思路 代码 时间和空间复杂度 算法汇总 以下是所有算法汇总,包括GitHub源码 ...

  5. 剑指offer——11.旋转数组的最小数字

    题目: 题1:实现快速排序 题2:年龄排序问题. 题3:旋转数组的最小数字 知识点: 快速排序算法,参考:https://blog.csdn.net/shujuelin/article/details ...

  6. Leetcode 剑指 Offer 11. 旋转数组的最小数字 (每日一题 20210916)

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

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

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

  8. 【双百解法】剑指 Offer 11. 旋转数组的最小数字

    立志用最少的代码做最高效的表达 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1 ...

  9. leetcode剑指 Offer 11. 旋转数组的最小数字(二分查找)

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

最新文章

  1. oracle存储过程dbms_output.put_line()显示打印结果
  2. 有理数加减乘除 计算机应用带答案,列50道有理数的混合运算(加减乘除)包括答案 初一的...
  3. 后台开发人员面试内容——JVM虚拟机(四)
  4. springmvc controller接收前端发送数组
  5. [转]关于内存泄露测试工具
  6. VB讲课笔记02:VB程序开发环境
  7. Jquery操作DOM节点
  8. 集成学习之Adaboost算法
  9. HTTP Cookies
  10. 抽象类实现接口,子类继承抽象类,这三个之间的关系?
  11. XidianOJ 1141 抢人头
  12. PolarDB-X 一致性共识协议 (X-Paxos)
  13. CC2541蓝牙串口乱码解决
  14. Flex布局和gird布局
  15. 完美解决iPhone自带的邮箱连接outlook后无法发送邮件问题
  16. 因子完备数c语言,编写函数输出完备数及其所有约数
  17. Web scraper使用教程-基本用法
  18. 高德地图的circle圈
  19. redis的hash怎么实现以及 rehash过程是怎样的?和JavaHashMap的rehash有什么区别,与ConcurrentHashMap扩容的策略比较?
  20. Excel中VLOOKUP函数简易使用——精确匹配或近似匹配数据

热门文章

  1. 那些年我们踩到过的坑(二):3.1 版 MultiThreadedHttpConnectionManager 未releaseConnection导致应用服务器宕机...
  2. javascript中错误使用var造成undefined
  3. 查询所有的存储过程哪些中包含某个字符串
  4. [codeigniter]CI中使用pChart绘制图表,已测通过
  5. 配置 Keepalived + LVS-DR模式, 实现高可用和负载均衡
  6. Linux系统命令三剑客之 awk
  7. 摩卡业务服务管理 全面彰显强大产业推动优势——神华集团神东煤炭分公司
  8. JS替换空格回车换行符
  9. 趁有空,再了解一下GROOVY中关于类的通例
  10. java 风格的正则表达式 vs Perl风格的正则表达式