把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
2017-08-10 13:06
399 查看
#include<iostream> #include<vector> using namespace std; int MinInOrder(vector<int> rotateArray) { int result = rotateArray[0]; int index1 = 0; int index2 = rotateArray.size()-1; for(int i=index1+1;i<index2;++i) { if(result < rotateArray[i]) { result = rotateArray[i]; } } return result; } int minNumberInRotateArray(vector<int> rotateArray)//the answer of <<剑指offer>> : test run time:28 ms { if(rotateArray.size() == 0 ) return 0; int length = rotateArray.size(); int index1 = 0; int index2 = length-1; int indexMid = index1; while(rotateArray[index1] >= rotateArray[index2]) { if(index2 - index1 == 1) { indexMid = index2; break; } indexMid = (index2+index1)/2; if(rotateArray[index1] == rotateArray[index2] && rotateArray[indexMid] == rotateArray[index1]) { return MinInOrder(rotateArray); } if(rotateArray[indexMid] >= rotateArray[index1]) index1 = indexMid; else if(rotateArray[indexMid] <= rotateArray[index2]) index2 = indexMid; } return rotateArray[indexMid]; } /* //code of myself the code test time: 26 ms int minNumberInRotateArray(vector<int> rotateArray) { if(rotateArray.size() == 0) return 0; if(rotateArray.size() == 1) return rotateArray[0]; int len = rotateArray.size(); int i = 0; int min = rotateArray[0]; int tmp; for(;i<len;++i) { tmp = rotateArray[i]; if(tmp >rotateArray[i+1]) { if(min > rotateArray[i+1]) min = rotateArray[i+1]; cout<<" circlu times = "<<i<<endl; return min; } } return min; } */ int main() { vector<int> vec; vec.push_back(3); vec.push_back(4); vec.push_back(5); vec.push_back(1); vec.push_back(2); cout<<"min = "<<minNumberInRotateArray(vec)<<endl; return 0; }
相关文章推荐
- java实现把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如{3,4,5,1,2}为{1,2,3,4,5}
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组
- 求旋转数组的最小元素(把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转。输出旋转数组的最小值。
- 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
- 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素
- 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素
- 【c语言】输入一个递增排序的数组的一个旋转,输出旋转数组中的最小元素
- 面试题8:输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
- 【C语言】求旋转数组的最小数字,输入一个递增排序的数组的一个旋转,输出其最小元素
- 输出一个为递增排序数组的旋转数组中的最小元素――8
- [经典面试题]输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 输出一个一维数组中的最大值、最小值、全部元素的和,并将此数组中的值按逆序重新存放。例如原先a[0]~a[4]存放2 8 7 5 3,逆序存放后 a[0]~a[4]变为存放3 5 7 8 2
- 定义一个一维数组,其元素个数从键盘中输入,元素的值为[100,200]的随机整数。 (1)输出数组的每个数 (2)对数组的数进行升序排序,输出排序后的数组元素 (3)从键盘上输入一个整数,查找该整数是
- 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。