題目
在乙個 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。
思路:
觀察二維陣列陣列特性:每一行從左到右遞增的順序排序,每一列從上到下遞增,所以將右上角元素作為flag元素,如果輸入的target比flag小,如果該target存在只可能在flag元素所在行的左邊找到該元素,所以向左移一列(行從左到右遞增,小的元素在flag的左邊),如果輸入的target比flag大,說明flag所在行的元素都比target小,向下移動一行,直到找到該元素。
**
bool findnumberin2darray
(int
** matrix,
int matrixsize,
int* matrixcolsize,
int target)
for(
int i =
0, j =
*matrixcolsize -
1;i < matrixsize && j >=0;
)else
if(target > matrix[i]
[j])
else
}return false;
}
知識點
二維陣列判空:
matrix == null || matrixsize == 0 || matrixcolsize == 0
matrix == null判斷該二位陣列是否存在;
matrixsize == 0 || matrixcolsize == 0表示判斷二維陣列的行或者列是否全為0
刷題 二維陣列查詢
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。package timufuxi public class kaoshi boolean symbol sol...
C 刷題 二維陣列
在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。分析 二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排...
python 刷題 二維陣列中的查詢
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入描述 array 待查詢的二維陣列 target 查詢的數字 輸出描述 查詢到返回true,查詢不到返回false coding ...