面試題 劍指offer08 旋轉找出最小的數字

2021-08-02 13:34:17 字數 932 閱讀 2599

對於乙個陣列,裡面肯定存在乙個最小的數,找出這個最小的數字,有很多的方法

將陣列裡面的數字旋轉一次,即可找到那個最小的數字

這將要使用二分查詢的方法:

以下是**的實現:

#define _crt_secure_no_deprecate

#include#includeusing namespace std;

int binarysearchminnum(int* arr, int length)

mid = low + ((high - low) >> 1);

if (arr[low] == arr[high] && arr[low] == arr[mid])

}return min;

}if (arr[mid] >= arr[low])

else if (arr[mid] <= arr[high])

}return arr[mid];

} else }

int main()

; cout << binarysearchminnum(arr1, 5) << endl;

int arr2[5] = ;

cout << binarysearchminnum(arr2, 5) << endl;

int arr3[5] = ;

cout << binarysearchminnum(arr3, 5) << endl;

int arr4[5] = ;

cout << binarysearchminnum(arr4, 5) << endl;

system("pause");

return 0;

}

執行的結果如下:

劍指Offer08 陣列旋轉問題

把乙個陣列最開始的若干個元素搬到陣列末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出陣列最小的元素。例如陣列為的乙個旋轉,該陣列的最小值為1。採用二分法的思路,設定兩個指標分別指向陣列的第乙個元素和最後乙個元素。第乙個元素應該是大於或者等於最後乙個元素的,存在特例 找到陣列中間的元...

劍指offer 08 跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 於本題,前提只有 一次 1階或者2階的跳法。a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 b.假定第一次跳的是2階,那麼剩下的是...

劍指offer 08 跳台階

題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 時間限制 c c 3秒,其他語言6秒 空間限制 c c 64m,其他語言128m 題目示例 示例1 輸入 1 返回值 1 示例2 輸入 4 返回值 5解法分析我記得這好像是一...