題目描述:在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
現有矩陣 matrix 如下:
[時間複雜度:o(m*n)[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)
for(
int i =
0; i < row; i++)}
}return
false
;}
因為陣列是有規律排列的,先從右上角開始找,分以下兩種情況:
1、如果要查詢的元素target小於右上角的數字,則排除右上角數字所在的列。即col–
2、如果要查詢的元素小於右上角的數字,則排除右上角數字所在的行.即row++
**編寫思路:
if ( target > arr [row,col ] ) row++
if(target < arr[row,col] ) col–
if(target = arr[row,col] ) return true
如果沒有找到就返回false
public
boolean
findnumberin2darray_02
(int
matrix,
int target)
//二維陣列的行數和列數
int rows = matrix.length;
int cols = matrix[0]
.length;
//初始情況下的行=0
int row =0;
//初始情況下的列=cols-1
int col = cols-1;
//以下部分有迴圈的條件:就是行和列到達邊界
while
(row=0)
if(num < target)
if(num == target)
}return
false
;}
劍指offer04 二維陣列查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。測試示例 矩陣 matrix 如下 begin 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 ...
劍指Offer04 二維陣列中的查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個高效的函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。現有矩陣 matrix 如下 1,4,7,11,15 2,5,8,12,19 3,6,9,16,22 10,13,1...
劍指 Offer 04 二維陣列中的查詢
在乙個 n m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。遍歷陣列 時間複雜度 o nm 空間複雜度o 1 從二維陣列的右上角開始查詢。如果當前元素等於目標值,則返回 true。如...