【劍指 Offer】11. 旋轉陣列的最小數字
思路
- 初始化兩個指標
left
,right
分別指向陣列首尾; - 開始二分搜尋,求
mid
,然後和right位置的數字進行比較;- 若
nums[mid]
大於nums[right]
,則說明最小值在mid
右側,那麼左邊界left = mid + 1
; - 若
nums[mid]
小於nums[right]
,則說明最小值在mid
左側,那麼右邊界right = mid
; - 若
nums[mid]
等於nums[right]
,那麼右邊界左移,right --
;
- 若
class Solution {
public int minArray(int[] numbers) {
int left = 0;
int right = numbers.length - 1;
int 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;
}else{
right --;
}
}
return numbers[left];
}
}
相關文章
- 劍指 Offer 11. 旋轉陣列的最小數字陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 【劍指offer】7.旋轉陣列的最小數字陣列
- 【劍指offer】旋轉陣列的最小值陣列
- 劍指offer-轉陣列的最小數字-php陣列PHP
- (python版)《劍指Offer》JZ06:旋轉陣列的最小數字Python陣列
- 0二分查詢簡單 牛客NC.71旋轉陣列的最小數字 leetcode劍指 Offer 11. 旋轉陣列的最小數字陣列LeetCode
- 【劍指offer】把陣列排成最小的數陣列
- 劍指offer面試題11:旋轉陣列的最小數字(Java版已在牛客網AC)面試題陣列Java
- 劍指Offer-34-把陣列排成最小的數陣列
- 劍指offer——把陣列排成最小的數C++陣列C++
- 力扣 - 劍指 Offer 45. 把陣列排成最小的數力扣陣列
- 劍指Offer--陣列中重複的數字陣列
- 《劍指offer》:[51]陣列中的重複數字陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 【劍指offer】數字在排序陣列中出現的次數排序陣列
- 《劍指offer》:[38]數字在排序陣列中出現的次數排序陣列
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 《劍指Offer》- 連續子陣列的最大和或最小和陣列
- 劍指offer之列印超過陣列一半的數字陣列
- 劍指offer 陣列中只出現一次的數字陣列
- 劍指 offer(1) -- 陣列篇陣列
- 我請大家來刷題:旋轉陣列的最小數字陣列
- 面試:Java 實現查詢旋轉陣列的最小數字面試Java陣列
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 劍指offer刷題之路--1.陣列中重複的數字陣列
- 《劍指offer》:[40]陣列中只出現一次的數字陣列
- 【劍指offer】陣列中只出現一次的數字(1)陣列
- 【劍指offer】陣列中只出現一次的數字(2)陣列
- 【劍指offer】陣列中的逆序對陣列
- 《劍指offer》:[41]陣列中和為S的兩個數陣列
- [劍之offer] 03 陣列中重複的數字陣列
- 旋轉陣列中的最小元素陣列
- 劍指offer之順序列印陣列陣列
- 【劍指offer】調整陣列順序陣列