劍指Offer (6)旋轉陣列的最小數字

2021-07-31 13:25:52 字數 1077 閱讀 4332

題目描述:

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。

輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。

例如陣列為的乙個旋轉,該陣列的最小值為1。

note:給出的所有元素都大於0,若陣列大小為0,請返回0。

實現如下:

//

// l m r

//規律:一般前旋轉區的數大於等於後旋轉區的數

//注意特殊情況

//1.旋轉數為0個,即未旋轉,此時rotatearray[0]為min

//2.->

// l m r 此時無法判斷middle在前旋轉區還是後旋轉區

//o(logn)

class solution

return min;

}int minnumberinrotatearray(vector

rotatearray)

//當l==m==r時,只能採取遍歷方式尋找min

else

if (*itleft == *itright && *itleft == *itmiddle)

return searchinrotatearray(rotatearray);

//此時min在後旋轉區

else

if (*itleft <= *itmiddle) itleft = itmiddle;

//此時min在前旋轉區

else

if (*itright >= *itmiddle) itright = itmiddle;

}return *itmiddle;

}};//嘿嘿...直接sort,費這老鼻子勁→_→

//o(n)

/*#include class solution

};*/

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

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

劍指offer(6) 旋轉陣列的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。這道題最直觀的解法並不難,從頭到尾遍歷陣列一次,我們就能找出最小的元素。這...

劍指offer 6 旋轉陣列的最小數字

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。解法1 從頭到尾遍歷一次,當第一次遇到前面的值大於後面的值時,後面的值即...