劍指offer 二維陣列中的查詢(java

2021-07-23 06:57:49 字數 764 閱讀 5263

例如下面的二維陣列就是每行、每列都是遞增排序。如果在這個陣列中查詢數字7,則返回true,如果查詢陣列5,由於陣列中不含有該數字,則返回false。

1  2  8  9

2  4  9  12

4  7  10  13

6  8  11  15

首先我們選取陣列右上角的數字9.由於9大於7,並且9還是第4列的第乙個(也是最小的)數字,因此7不可能出現在數字9所在的列,於是只需要分析剩下的3列,在剩下的矩陣中,位於右上角的數字還是8.同樣8大於7,因此8所在的列也可以剔除。接下來只需分析剩下的兩列,由於2小於7,那麼要查詢的7可能在2的右邊和下邊。由於2的右邊都已經被剔除,所以只可能出現在2的下邊,將2所在的行剔除,只剩下三行兩列,再和前面同樣的方法查詢,當找到7時就結束了。

總結規律如下:首先選取矩陣右上角的數字。如果等於要查詢的數字,查詢過程結束;如果大於要查詢的數字,則剔除這個數字所在的列,如果小於要查詢的數字,則剔除這個數字所在的行。這樣每一步都可以縮減查詢範圍,直到找到要查詢的數字,或者查詢失敗。

public

static

boolean

getvaluefrommatrix(

int sample, 

introws,    

intcolumns, 

intnum)  else

if(num < tempvalue)  else

}    

}    

return

found;    

}    

劍指offer 二維陣列中查詢

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

劍指offer 二維陣列中查詢

從今天開始每天一題,除了節假日。在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution return false class solut...

劍指offer 二維陣列中查詢

要求如下 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數 示例如下 7,1,2,8,9 2,4,9,12 4,7,10,13 6,8,11,15 思路有三種,...