劍指 11 旋轉陣列的最小數字

2021-08-20 03:49:16 字數 1333 閱讀 5436

題目描述

演算法分析

提交**:

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思路 首先判...