劍指offer面試題4 二維陣列中的查詢

2021-09-26 07:43:41 字數 593 閱讀 6716

本題應考慮利用題目中給出的陣列排列順序,以減少時間複雜度(以o(n)為方向)

規律:從左下角開始,向上都是遞減,向右都是遞增(或從右上角開始,向下都是遞增,向左都是遞減),依次將不滿足條件的行或列刪去,縮小查詢範圍

(不可以從左上或右下開始哦,這樣很容易忽略掉右上角方向的值)

#includeusing namespace std;

int main()

,,,};

int target,row=3,col=0;

bool flag=false;

cout<<"請輸入要查詢的數字:";

cin>>target;

while(row>=0 && col<=3) //從左下角開始做判斷,若target比左下角值大,則刪掉最左一列;若比左下角值小,則刪除最後一行

else

}if(!flag)

{cout<<"該值在陣列中不存在"《但在一開始寫這道題時,思路是偏的,用人腦的方式去想這個問題,計算機實現起來好像很複雜…還嘗試過從右下角開始考慮,但是是會漏項的,所以還是要先好好思考!

劍指offer面試題4 二維陣列的查詢

題目 二維陣列的查詢 在乙個二位陣列中,每一行都遞增,每一列的遞增,請完成乙個函式,查詢二維陣列中是否有number 方案 只需要每次從二維陣列的右上角開始查詢就可以了,因為如果右上角的數字都大於要查詢的number的話,那麼這一列肯定都大於number,我們只需要在剩下的列中找就行了,如果右上角的...

劍指offer面試題4 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。include include using namespace std class solution else...

劍指offer 面試題4 二維陣列中的查詢

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution def find self,array,target 判斷陣列是否為空 if a...