剑指offer---旋转数组中最小的数字(8)
来源:互联网 发布:网络生活服务类平台 编辑:程序博客网 时间:2024/06/05 16:41
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的逆转。输入一个递增排序的数组的一个逆转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为数组{1,2,3,4,5}的一个旋转,该数组的最小值为1。
#include <iostream>using namespace std;int MinInorder(int* arr,int index1,int index2){ int tmp = arr[index1]; for(int i=index1+1;i<index2;i++) { if(arr[i] < tmp) { tmp = arr[i]; } } return tmp;}int Min(int*arr,int len){ if(arr == NULL || len<=0) throw new exception("Invalid parameters"); int index1 = 0; int index2 = len-1; int midIndex = index1; while(arr[index1] >= arr[index2]) { //如果index1和index2相邻 if(index2-index1 == 1) { midIndex = index2; break; } midIndex = (index1+index2)/2; //如果index1==index2==midindex if(arr[index1]==arr[index2] && arr[midIndex] == arr[index1]) { return MinInorder(arr,index1,index2); } if(arr[midIndex] >= arr[index1]) { index1 = midIndex; } else if(arr[midIndex] <= arr[index2] ) { index2 = midIndex; } } return arr[midIndex];}int main(){ int arr[]={3,4,5,1,2}; int arr1[]= {1,0,1,1,1}; int flg = Min(arr1,sizeof(arr)/sizeof(arr[0])); cout<<flg<<endl; return 0;}
阅读全文
0 0
- 剑指offer---旋转数组中最小的数字(8)
- 【剑指offer】旋转数组的最小数字
- 剑指offer--旋转数组的最小数字
- 剑指offer--旋转数组的最小数字
- 剑指offer:旋转数组的最小数字
- 《剑指offer》旋转数组的最小数字
- 剑指 offer:旋转数组的最小数字
- 剑指offer-旋转数组的最小数字
- 剑指offer 旋转数组的最小数字
- 【剑指offer】旋转数组的最小数字
- 剑指offer 旋转数组的最小数字
- 剑指offer-旋转数组的最小数字
- 剑指Offer:旋转数组的最小数字
- 剑指Offer 旋转数组的最小数字
- 剑指offer|旋转数组的最小数字
- 剑指offer:旋转数组的最小数字
- 【剑指offer】旋转数组的最小数字
- 《剑指offer》旋转数组的最小数字
- Java基础之抽象类和继承知识点总结
- Leetcode 算法习题 第十四周
- xilinx vivado debug
- json转excel js
- libwebsockets 交叉编译
- 剑指offer---旋转数组中最小的数字(8)
- 源码网站收藏
- python reshape -1
- 使用jquery实现多张图片的上传
- 移动端 js new Date 根据日期获取日期问题 Invalid date 、undefined,
- Android写xml布局时的注意事项
- Caffe学习笔记(一):CIFRA-10在Caffe上进行训练学习
- 002 数据约束 关联查询 储存过程 权限和备份
- 数据库框架Litepal极简教程