劍指offer____旋轉陣列的最小數字
阿新 • • 發佈:2018-11-11
把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若陣列大小為0,請返回0。
class Solution { public: /* int minNumberInRotateArray(vector<int> r) { int result = 0; for(int i = 0; i < r.size()-2 ; i++) { if(r[i+1] < r[i]) { result = r[i+1]; break; } } return result; } */ int minNumberInRotateArray(vector<int> ro) { int low=0,high=ro.size()-1; while(low<high) { int mid=low+(high-low)/2; if(ro[mid]>ro[high]) { low=mid+1; } else if(ro[mid]==ro[high]) { high=high-1; } else { high=mid; } } return ro[low]; } };