微軟100題(48)迴圈陣列的查詢

2021-07-02 23:57:11 字數 339 閱讀 4630

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

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

思路:對於排序陣列查詢,最快用二分查詢,但是此陣列已經移動了一些位數

以中間為劃分,需要判斷左邊是單調遞減的還是右邊是單調遞減

int findnuminleftshiftarray(vector&data, int value,int left,int right)

else//右邊是單遞減序列

}} return -1;

}

注意幾個等號,因為個數為奇數時候,不加等號,會把判斷範圍弄錯,必須用小於等於。

微軟100題 求陣列中的逆序對

求陣列中的逆序對的個數 在陣列a中如果a i a j 且i稱為乙個逆序數對,例如陣列是7,5 6 4 則逆序對共有 7,5 7,6 7,4 5,4 6,4 五個逆序對,剛開始的時候沒有思路,看了看解答之後發現,還是採用分治的思想,類似於用歸併演算法實現,空間複雜度為n,需要乙個額外的陣列來儲存,時間...

微軟100題 3 求子陣列的最大和

include using namespace std 3.求子陣列的最大和 題目 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣...

求子陣列的最大和 微軟面試100題 第三題

題目要求 輸入乙個整型陣列,陣列裡有整數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有個乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如 輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。參考資料 劍指o...