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

2021-07-26 04:53:24 字數 959 閱讀 9573

目前研三,畢業在即,之前做android開發,現在想轉到後台開發,卻發現演算法部分太過欠缺,所以就去部落格上看別人寫的劍指offer題的見解。宣告,我這裡只是針對別人寫的,自己敲一遍**,然後發表出來,算是自己的日記,方便日後複習瀏覽。並無他意。

二維陣列中的查詢

題目描述:在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。

實現思路:因為這個陣列很特殊,每一行,右邊的數大於左邊的數,每一列,下面的數大於上面的數。我們選擇最右上角的數開始查詢,跟輸入的數字number做比較,如果最右上角的數字大於number,說明當前數字這一列肯定不存在number,去掉這一列。如果最右上角的數字小於number,說明number肯定不在這一行,去掉這一行,就這樣逐漸縮小陣列,直到等於number為止,或者不存在。

**示例:

//二維陣列查詢

public static boolean findnumber(int array, int number)

int lines = array.length;//line number

int columns = array[0].length;// column number

int line = 0;//第一行

int column = columns - 1;//最後一列

while (line >= 0 && line < lines && column >= 0 && column < columns) else if (array[line][column] > number) else

}return false;

}

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

題目 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution else if array row col target col else row return ...

劍指offer面試題3 二維陣列查詢問題

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。暴力破解方式也就是對二維陣列中的每個元素逐個檢查,結束條件為找到和目標值相等的元素或者查詢到最後乙個元素。對於乙個行列數都為n的二維陣...

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

思路 當我們看到這道題的第一反應應該是遍歷這個二維陣列,逐個進行查詢,這樣雖然可以得到結果但是時間複雜度較大,並且沒有用到題目中給我們的線索,我們可以看到該二維數字是按照一定順序排列的。我們可以把這個四行四列的二維陣列看做乙個4 4的方格,先找出右上角的數字,如果右上角的數字是我們要找的數字就結束,...