旋转数组的最小数字
来源:互联网 发布:python 书籍 知乎 2016 编辑:程序博客网 时间:2024/06/03 22:04
旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
class Solution {public: //寻找旋转数组中的最小数字 int MinOrder(vector<int> &num,int left,int right){ int result = num[left]; for(int i = left + 1;i < right;++i){ if(num[i] < result){ result = num[i]; } } return result; } int minNumberInRotateArray(vector<int> rotateArray) { int size = rotateArray.size(); if(size == 0){ return 0; } int left = 0,right = size - 1; int mid = 0; while(rotateArray[left] >= rotateArray[right]){ //当只有两个元素 if(right - left == 1){ mid = right; break; } //确保数组不会过大而越界 mid = left + (right - left) / 2; //当三个数字相等时,无法确定最小元素在哪,故可以遍历 if(rotateArray[left] == rotateArray[right] && rotateArray[left] == rotateArray[mid]){ return MinOrder(rotateArray,left,right); } // 由于left大于right,所以最小元素位于中间元素的后面 if(rotateArray[mid] >= rotateArray[left]){ left = mid; } // 此时最小元素位于中间元素的前面 else{ right = mid; } } return rotateArray[mid]; }};
0 0
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- 旋转数组的最小数字
- mysql的事务和锁
- How do I fix the GPG error “NO_PUBKEY”?
- 常用Git命令
- 搞点事情,使用node搭建反向代理
- UML的介绍
- 旋转数组的最小数字
- idea多project
- 统计单词个数
- C语言查找字符
- getaddrinfo ENOTFOUND api.github.com api.github.com:443
- Emgucv摄像头使用
- Linux服务器上部署web环境
- 2017春招实习总结篇
- Vue-login 案例的学习(二)