lintcode刷題 搜尋旋轉排序陣列

2021-08-07 13:14:13 字數 829 閱讀 4432

原題如下:

搜尋旋轉排序陣列 

假設有乙個排序的

按未知的旋轉軸旋轉的

陣列(比如,

0 1 2 4 5 6 7

可能成為

4 5 6 7 0 1 2

)。給定乙個目標值進行搜尋,如果在陣列中找到目標值返回陣列中的索引位置,否則返回-1。

你可以假設陣列中不存在重複的元素。

您在真實的面試中是否遇到過這個題?

yes

樣例給出[4, 5, 1, 2, 3]

和target=1,返回 2

給出[4, 5, 1, 2, 3]

和target=0,返回 -1

做題思路:

1、用二分法來做,每次寫二分法的時候我總是思路不夠清晰,然後判斷條件裡面是否加等號也不是很清楚,需要多加練習;

2、分幾種情況:

如果mid正好是需要尋找的target的下標,直接返回;

如果mid(簡寫,即mid對應位置的數值)小於左邊的l,那麼證明mid和l不在乙個遞增陣列上,分割開了。此時mid肯定是和r即最右邊的數在乙個遞增陣列上,則判斷如果target大於mid並且小於等於(注意有等於)r,那麼l=mid+1,否則在前面,r=mid-1;

如果mid大於等於左邊的l,證明mid和l在乙個遞增陣列上,那麼判斷,如果mid大於target且target大於等於l,則r=mid-1,否則l=mid+1。

具體的c++**如下:

class solution

if(a[mid]>a[l])

else

}else

else}}

return -1;}};

LintCode刷題 旋轉字串

描述 給定乙個字串 以字元陣列的形式給出 和乙個偏移量,根據偏移量原地旋轉字串 從左向右旋轉 樣例 輸入 str abcdefg offset 3 輸出 str efgabcd 樣例解釋 注意是原地旋轉,即str旋轉後為 efgabcd 解題 難點分析 字串為 的情況 偏移量 offset 0 偏移...

LintCode刷題之路(八) 旋轉字串

給定乙個字串和乙個偏移量,根據偏移量旋轉字串 從左向右旋轉 樣例 對於字串 abcdefg offset 0 abcdefg offset 1 gabcdef offset 2 fgabcde offset 3 efgabcd 挑戰 在陣列上原地旋轉,使用o 1 的額外空間 思路 新建立乙個字串陣列...

LintCode刷題隨筆

給出乙個陣列nums包含n 1個整數,每個整數是從1到n 包括邊界 保證至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。1.不能修改陣列 假設陣列只能讀 2.只能用額外的o 1 的空間 3.時間複雜度小於o n 2 4.陣列中只有乙個重複的數,但可能重複超過一次 您在真實的面試中是...