《劍指Offer》之面試題旋轉陣列的最小數字

2021-06-27 01:45:15 字數 805 閱讀 7578

把陣列最開始的若干元素搬到陣列的末尾,我們稱之為陣列的旋轉,輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素,例如為的乙個旋轉,該陣列的最小值為1.

int min(int *number, int len)

int index1, index2;

index1 = 0;//指向陣列第乙個元素

index2 = len - 1;//指向陣列最後乙個元素

int indexmid = index1;//當陣列沒有反轉時也就是翻轉的元素個數為0,則第乙個元素最小直接返回第乙個元素;

while (number[index1] > number[index2])

if (number[index1]==number[index2]&&number[index1]==number[indexmid])//如果第乙個元素和最後乙個元素以及中間數相等的情況時無法判斷,則只能用順序查詢

indexmid = (index2 + index1) / 2;

if (number[indexmid]>=number[index1])//中間數大於index1指的元素時,說明中間數屬於前乙個子陣列則index1指向indexmid

if (number[indexmid]<=number[index2])//中間數小於index1指的元素時,說明中間數屬於後乙個子陣列則index1指向indexmid

}}int mininorder(int *numbers, int index1, int index2)//順序查詢

} return result;

}

劍指offer之面試題11 旋轉陣列的最小數字

1 題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如 陣列為的乙個旋轉,該陣列的最小值為1。輸入引數 一維陣列numbers,陣列長度length 輸出引數 最小元素的值,或者丟擲 傳入引數錯誤 的異常 2 解題 ...

劍指offer 面試題11 旋轉陣列的最小數字

完整 位址 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。這道題目相對前面的比較複雜,坑比較多 此時用二分法解決,mi...

劍指Offer面試題11 旋轉陣列的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。牛客網ac class solution int left 0,right...