題目描述
演算法分析
提交**:
class solution
middle = (start + end) / 2;
if (rotatearray[start] == rotatearray[middle]
&& rotatearray[end] == rotatearray[middle])
if (rotatearray[middle] >= rotatearray[start])
start = middle;
else if(rotatearray[middle] <= rotatearray[end])
end = middle;
} return rotatearray[middle];
} /*順序查詢最小元素*/
int mininorder(vector&rotatearray)
return result;
}};
測試**:
// ********************測試**********************
void test(vector&numbers, int expected)
catch (...) }
int main(int argc, char* argv)
; test(array1, 1);
// 有重複數字,並且重複的數字剛好的最小的數字
vectorarray2 = ;
test(array2, 1);
// 有重複數字,但重複的數字不是第乙個數字和最後乙個數字
vectorarray3 = ;
test(array3, 1);
// 有重複的數字,並且重複的數字剛好是第乙個數字和最後乙個數字
vectorarray4 = ;
test(array4, 0);
// 單調公升序陣列,旋轉0個元素,也就是單調公升序陣列本身
vectorarray5 = ;
test(array5, 1);
// 陣列中只有乙個數字
vectorarray6 = ;
test(array6, 2);
// 有重複的數字,並且重複的數字剛好是第乙個數字和最後乙個數字
vectorarray7 = ;
test(array7, 0);
// 輸入nullptr
test(vector(), 0);
return 0;
}
劍指第11題 旋轉陣列的最小數字
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。三種情況 1 旋轉0個元素 2 二分法取三處均相等 需順序查詢 o n ...
劍指offer 旋轉陣列的最小數字(11題)
1 第一題引至劍指offer 題目 把乙個陣列最開始的若干元素搬到陣列的末尾,稱其為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如,陣列 3,4,5,1,2 為 1,2,3,4,5 的乙個旋轉,該陣列的最小值為1.解此題分兩種情況 第一種情況 前後指標與中間指標所指向的元...
劍指offer11 旋轉陣列的最小數字
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個公升序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。陣列可能包含重複項。注意 陣列內所含元素非負,若陣列大小為0,請返回 1。樣例 輸入 nums 2,2,2,0,1 輸出 0思路 首先判...