100題 第四十八題 移位陣列的二分查詢

2021-09-30 15:11:04 字數 777 閱讀 5908

一,題目

乙個陣列是由乙個遞減數列左移若干位形成的,比如

是由左移兩位形成的,在這種陣列中查詢某乙個數。

二,分析

1)在此序列不斷二分的過程中,由於原序列是乙個遞減序列經過旋轉得到的,將它從任何位置分開,都會得到兩個序列,

其中乙個是遞減序列

另乙個可以通過乙個遞減序列通過旋轉得到。

2)這樣在不斷地二分查詢時,我們處理的序列子片段要麼就是乙個旋轉後遞減序列,要麼就是乙個純遞減序列,

3)無論是前者還是後者,在繼續分成兩個片段時,至少有乙個純遞減序列(可能兩個都是,如果之前的序列片段就是純遞減序列的話)。

4)這樣我們可以保證能找到乙個片段是純遞減序列(if(data[i]>=data[j]))

5)然後判斷我們要找的數是否在這個片段中(這是很直觀的,if(data[i]<=num&&num<=data[j])),如果在則繼續在此片段中查詢,否則說明在另乙個序列中,則遞迴在其中查詢

三,原始碼

#includeusing namespace std;

int bisearch(int a,int left,int right,int num)

//int mid=(left+right)/2;

int mid=left+(right-left)/2;

if(a[mid]==num)

return mid;

if(a[mid]<=a[left])//左側純遞減

else //右側純遞減

{if(num>=a[right]&&num

LeetCode第四十八題 Python實現

title leetcode no.48 categories tags 給定乙個 n n 的二維矩陣 matrix 表示乙個影象。請你將影象順時針旋轉 90 度。你必須在 原地 旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要 使用另乙個矩陣來旋轉影象。示例 1 輸入 matrix 1,2,...

第四十八課 同名覆蓋引發的問題

一 子類物件可以當做父類物件使用 相容性 1 子類物件可以直接賦值給父類物件 2 子類物件可以直接初始化父類物件 3 父類指標可以直接指向子類物件 4 父類引用可以直接引用子類物件 5 當父類指標 引用 指向子類物件時 1 子類物件退化為父類物件 2 只能訪問父類中定義的成員 3 可以直接訪問被子類...

171212 類的其他成員 連續第四十八天

類的常成員 定義常成員用關鍵字const,寫作const int a 常成員在建構函式中可以直接用常量進行初始化,這樣初始化後資料將有相同的值 當不同的物件去呼叫常資料是,所對應的位址也是不相同的 此外c 中的 的作用是其分割作用,是類給成員變數賦值的方法,初始化列表,更適用於常資料成員的初始化 對...