旋转数组的最小值
来源:互联网 发布:婚礼开场mv制作软件 编辑:程序博客网 时间:2024/04/28 13:37
//这种方法是剑指offer推荐的,但是nowcoder并不能通过#include <iostream>#include <vector>#include <algorithm>using namespace std;int findMin(vector<int>a, int i_begin, int i_end){ int min = a[i_begin]; for (size_t i = i_begin; i <= i_end; i++) { if (min>a[i]) { min = a[i]; } } return min;}int rotate(vector<int>a){ int length = a.size(); int i = 0; int j = length - 1; int mid = i; while (a[i] >= a[j]) { if (j - i == 1) { return a[j]; break; } if (a[i] == a[mid] && a[i] == a[j]) return findMin(a,i, j); if (a[mid] > a[i]) i = mid; if (a[mid] < a[j]) j = mid; mid = (i + j) / 2; } return a[i];}int main(){ int n; vector<int>a; while (cin >> n) { a.clear(); int tmp; for (int i = 0; i < n; ++i) { cin >> tmp; a.push_back(tmp); } int min = rotate(a); cout << min << endl; } return 0;}//另一种思路链接:https://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba来源:牛客网class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { //数组为空时 if(rotateArray.size() == 0) return -1; //前部分数据旋转 for(int i = 0; i < rotateArray.size() - 1; i++){ if (rotateArray[i] > rotateArray[i + 1]) return rotateArray[i + 1]; } //全部数据旋转,相当于没有旋转,最小数即为第一个数 return rotateArray[0]; }};
阅读全文
1 0
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 旋转数组的最小值
- 寻找旋转数组的最小值
- 输出旋转数组的最小值
- 旋转数组的最小值问题
- 求旋转数组的最小值
- 旋转数组的最小值输出
- 查找旋转数组的最小值
- 查找旋转数组的最小值
- spring Cloud
- Python 多线程(小试牛刀)
- hdu Problem-5702(结构体排序)
- Java并发问题--乐观锁与悲观锁以及乐观锁的一种实现方式-CAS
- Unity真机调试:查看安卓和ios的Profile(内含安卓,ios打包教程)
- 旋转数组的最小值
- Android:分析app、Process、Task之间的区别,以及获取最近运行的程序(近期任务)与正在运行的程序
- scrollview 嵌套 recycleview 问题 gridlayout
- 自顶向下深入分析Netty(六)--Channel总述
- git fomat-patch 和 git am用法
- PHP 堆栈和队列
- day01
- Bloom-Filter
- 安卓巴士android源码、博文精选1