在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
示例:現有矩陣 matrix 如下:
[[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]給定 target = 5,返回 true。
給定 target = 20,返回 false。
思路:二維陣列中,從左到右,從上到下是遞增的,所以可以從將目標數從右上角開始遍歷,如果當前數小於目標數,就向下遍歷,如果當前數大於目標數就向左遍歷。直到遍歷完整個二維陣列。
public
boolean
findnumberin2darray
(int
matrix,
int target)
//如果二維陣列為空,或者行數為0,或者列數為0,那麼直接返回false
int rows=matrix.length;
//int cols=matrix[0]
.length;
int r=0;
//設定起始點,從右上角的第乙個數開始遍歷。
int c=cols-1;
//列下標比列數少1
while
(r<=rows-
1&&c>=0)
else
if(matrix[r]
[c]< target)
else
}return
false
;//遍歷完整個二維陣列之後沒有找到目標值,說明目標值不在這個二維數字中,返回false。
}
刷題 二維陣列查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。package timufuxi public class kaoshi boolean symbol sol...
演算法刷題筆記 二維陣列中的查詢
題目描述 解法一 二叉搜尋樹 解法構思 類似於二叉樹的,若查詢失敗,則一定終止於nil區。比如,在根為13的樹中查詢12,如下圖。上手程式設計 inline tupleleft const tuple root inline tupleright const tuple root class sol...
刷演算法 二維陣列中的查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。例如二維陣列arr 1,2,3,4 5,6,7,8 9,10,11,12 target 7,如果按照常規的查詢...