程式設計師面試題 二維陣列中的查詢

2021-09-12 08:50:45 字數 762 閱讀 9205

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

解題思路:

比如在上圖的二維陣列中查詢元素7,我們每次查詢都使用當前陣列右上角那個元素與目標元素作比較。比如第一次選右上角的9與7對比,7小於9,顯然,9所在那一列不可能有7了,因為那一列最小的元素是9,7比9還小。我們就剔除了這一列!

接下來,陣列右上角的元素就變為8了,7比8小,因此再剔除這一列。此時陣列右上角元素為2了,7比2大,那就剔除2所在的行,這是因為2是在這行的最右邊,是這行的最大的元素,7比2大,就比這行所有元素都大,所以剔除這一行。

總結一下上面的思路:

當target == 當前陣列右上角元素時,找到元素,返回。

當target < 當前陣列右上角元素時,剔除當前陣列右上角元素所在這一列。

當target > 當前陣列右上角元素時,剔除當前陣列右上角元素所在這一行。

正確的**如下:

class solution 

else if(target 

else

}return false;}};

面試題 二維陣列中的查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢數字5,由於陣列不含有該數字,則返回f...

面試題 二維陣列中的查詢

在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如下面的二維陣列就是每行 每列都遞增排序。如果在這個陣列中查詢數字7,則返回true 如果查詢數字5,由於陣列不含有該數字,則返回f...

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

題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 輸入可能包含多個測試樣例,對於每個測試案例,輸入的第一行為兩個整數m和n 1 m,n 1000 代表將要輸入的矩陣的行...