0二分查詢簡單 牛客NC.71旋轉陣列的最小數字 leetcode劍指 Offer 11. 旋轉陣列的最小數字
問題描述
把一個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。例如,陣列 [3,4,5,1,2] 為 [1,2,3,4,5] 的一個旋轉,該陣列的最小值為1。
思路
旋轉陣列的最小值與最大值構成旋轉陣列的分界線。
numbers類似 [1,0,1,1,1] 或者[1,1,1,0,1],此時最小數字不好判斷在mid左邊
right–.
class Solution {
public int minArray(int[] numbers) {
if(numbers.length == 0){
return 0;
}
int left = 0, right = numbers.length-1, mid;
while(left != right){
mid = left + (right - left)/2;
if(numbers[mid] > numbers[right]){
left = mid + 1;
}else if(numbers[mid] < numbers[right]){
right = mid;//因為中心點也有可能是最小值,所以不能是mid-1。
}else{
right--;
}
}
return numbers[left];
}
}
相關文章
- 【劍指 Offer】11. 旋轉陣列的最小數字陣列
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- (python版)《劍指Offer》JZ06:旋轉陣列的最小數字Python陣列
- 劍指offer面試題11:旋轉陣列的最小數字(Java版已在牛客網AC)面試題陣列Java
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- 我請大家來刷題:旋轉陣列的最小數字陣列
- 旋轉陣列中的最小元素陣列
- 劍指Offer-34-把陣列排成最小的數陣列
- 劍指offer——把陣列排成最小的數C++陣列C++
- 第二章 :查詢與排序-------2.17解題實戰_旋轉陣列的最小數字(改造二分法)排序陣列
- 二維陣列中的查詢——牛客劍指offer陣列
- LeetCode 189 旋轉陣列LeetCode陣列
- LeetCode-153-尋找旋轉排序陣列中的最小值LeetCode排序陣列
- 【LeetCode】153. 尋找旋轉排序陣列中的最小值LeetCode排序陣列
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 力扣 - 劍指 Offer 45. 把陣列排成最小的數力扣陣列
- 【LeetCode】189. 旋轉陣列LeetCode陣列
- LeetCode-189-旋轉陣列LeetCode陣列
- 劍指Offer--陣列中重複的數字陣列
- 153. 尋找旋轉排序陣列中的最小值排序陣列
- 153. 尋找旋轉排序陣列中的最小值(中)排序陣列
- LeetCode 33——搜尋旋轉排序陣列LeetCode排序陣列
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- LeetCode 81——搜尋旋轉排序陣列 IILeetCode排序陣列
- LeetCode33. 搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode#33搜尋旋轉排序陣列LeetCode排序陣列
- LeetCode33 搜尋旋轉排序陣列LeetCode排序陣列
- 【LeetCode(Java) - 33】搜尋旋轉排序陣列LeetCodeJava排序陣列
- LeetCode每日一題: 旋轉陣列(No.189)LeetCode每日一題陣列
- leetCode33搜尋旋轉排序陣列LeetCode排序陣列
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列