剑指offer——面试题8:旋转数组的最小数值
来源:互联网 发布:美国windows vps 编辑:程序博客网 时间:2024/05/17 22:30
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0
我的代码:
class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { if(rotateArray.empty()) return 0; int minvec = 0; for(int i = rotateArray.size()-1;i>=0;--i) { if(rotateArray[i]< rotateArray[i-1]) { minvec = rotateArray[i]; break; } } return temp; }};
分析:显然,这一题利用直观的解法,挺简单,时间复杂度为 O(n),可是还是《剑指offer》厉害,还有一个O(log n)的解法
O(log n)的解法:
旋转之后的数组,实际上可以划分为两个排序的子数组,而且前面的子数组元素都大于或者等于后面子数组的元素。我们还注意到,最小的元素,恰好是这两个子数组的分界线。在排序的数组中,可以利用二分查找法实现 O(log n)的查找。牵扯到排序,等过一段时间再系统整理
阅读全文
2 0
- 剑指offer——面试题8:旋转数组的最小数值
- 【剑指offer】面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 剑指Offer:面试题8 :旋转数组的最小数字
- 《剑指offer》面试题8旋转数组的最小数字
- 《剑指Offer》面试题8:旋转数组的最小数字
- 【剑指offer】 面试题8: 旋转数组的最小数字
- 剑指offer-面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 【剑指offer】面试题8:旋转数组的最小数字
- 剑指offer面试题8:旋转数组的最小数字
- 剑指offer--面试题8: 旋转数组的最小数字
- 剑指Offer---面试题8:旋转数组的最小数字
- 剑指offer-面试题8-旋转数组的最小数字
- 剑指offer-面试题8 旋转数组的最小数字
- 剑指offer-面试题8-旋转数组的最小数字
- 剑指offer 面试题8 旋转数组的最小数字
- 剑指offer面试题[8]-旋转数组的最小数字
- 软件工程:“银弹”论
- ci框架&框架设计思路
- 【随笔】Oct, 19, 2017
- iOS简单工厂模式
- 清除进程
- 剑指offer——面试题8:旋转数组的最小数值
- 正则表达式入门
- php spl_autoload_register类库自动加载,省去引入类文件
- Bootstrap(二十八)
- 初始化环境配置:CentOS 7.4x64 系统安装及基础配置
- 常见进程间的几种通信方式以及使用注意点
- 解决click与hover(mouseover)的冲突问题
- 【随笔】Oct. 26, 2017
- 学期总结