題目:
把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列是的乙個旋轉,該陣列的最小值為1。
思路:這題跟leetcode裡面的一道題目很像,那題是在旋轉陣列中查詢對應的元素。
leetcode 33:revised binary search
還有帶重複元素的查詢
search in rotated sorted array ii
本題比較簡單,只需要找出最小的元素,但是思路是一樣的。
當不考慮重複的時候,可以按下面做法:
時間複雜度:o(lgn)
#include #include #include #include #include using namespace std;
int finmin(vectornums)
return *last;
}int main()
; vectornums(arr, arr + 5);
cout << finmin(nums) << endl;
return 0;
}
如果考慮重複情況如下:
時間複雜度:
o(lgn),最壞情況下o(n)
#include #include #include #include #include using namespace std;
int finmin(vectornums)
return *last;
}int main()
; vectornums(arr, arr + 5);
cout << finmin(nums) << endl;
return 0;
}
面試題 旋轉陣列的最小數字
題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。解法 順序查詢即可,時間複雜度為 利用二分查詢的思想,大部分情況旋轉後陣列最小值左邊數值為最大,利用前後指標的方法找到最小值,此...
面試題8 旋轉陣列的最小數字
題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 代表旋轉陣列的元素個數。...
面試題8 旋轉陣列的最小數字
旋轉陣列的最小數字 問題描述 將乙個嚴格遞增的數字序列從第i個位置切分,將有半部分挪到左半部分,比如 1,2,3,4,5,6 3,4,5,6,1,2 輸出序列中最小的數字的位置 笨方法是從左到右掃瞄一遍,但是o n 的複雜度肯定是不行的。根據問題描述的性質可知,變換後的序列的第乙個數是大於最後乙個數...