劍指offer系列 旋轉元素的最小數字

2021-07-11 00:59:32 字數 1041 閱讀 8294

題目描述:

給定乙個遞增陣列旋轉後的陣列,找出旋轉陣列中的最小值

示例:

旋轉陣列為,則輸出為1

分析:

陣列可能存在以下三種情況

利用二分法的思想,記錄待查詢的邊界下標分別為left和right,此例中為0和6

1)如果nums[lef] < nums[right],則序列是遞增的,最小值即為左邊界nums[left],直接返回。(case1)

2)二分法求中間元素的下標mid=6,如果nums[mid]>nums[left]且nums[mid]>nums[right],則nums[left…mid]為遞增序列,最小值一定在nums[mid+1…right]之間,因此令left=mid+1繼續重複查詢。 (case2)

3)如果nums[mid] < nums[left]且nums[mid] < nums[right],則最小值一定在nums[left…mid]之間。令right=mid (case3)

4)如果都不滿足,即三個臨界點可能存在相等的情況,則++left,使左邊界向右移動一位繼續查詢

**:

int findmin(vector

& nums) else

if(nums[m]else

}return nums[l];

}

**:

bool search(vector

& nums, int target)

int l=0,r=nums.size()-1;

while(l<=r)else

if(nums[l]>nums[mid])else

}return

false;

}

《劍指offer》系列 1

最近一直在看劍指offer,這上面的題目都是比較考察程式設計能力的,打算做個記錄,把寫過的 儲存下來 1.實現乙個string類 面試官的考察點應該在以下幾點 1.模板類的書寫 2.對於賦值函式考察的幾點 1 是否返回引用,因為只有返回引用,才能連續的進行賦值 2 引數是否是常量 3 是否是自身賦值...

《劍指offer》系列 2

1.求斐波那契數列的第n項 這個題目很簡單,講遞迴的書上都是用這個來講的,但是面試的時候,如果你寫個遞迴,那估計會讓人失望的,因為遞迴的效率真是乙個問題,你可以測試一下,輸入50,基本上得到結果的時間,夠你去喝杯茶了 include using namespace std 使用遞迴效率太低了,甚至可...

劍指Offer 6 旋轉陣列的最小元素

description把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。可以直接binary search,每次mid和r的...