演算法刷題 5 從二維數值中查詢

2021-10-22 14:29:07 字數 950 閱讀 2277

在乙個 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,如果按照常規的查詢...