问:在一个二维数组中,每一行都是从左到右递增的排列顺序,每一列都是从上到下递增的排列顺序。 请写一个函数,实现输入一个二维数组和整数,判断数组中是否含有该整数。
解:简述思路 - 选取该二维数组最右上角的数字元素,如果该数字等于输入的数字,查找结束;如果该数字大于输入的数字,则忽略该数字所在的列;反之,如果该数字小于输入的数字,则忽略该数字所在的行。
代码实现如下(JavaScript):
function find(arr, number) {
let rows = arr.length;
let columns = arr[0].length;
if (rows > 0 && columns > 0) {
let row = 0;
let col = columns - 1;
while (row < rows && col >= 0) {
if (number === arr[row][col]) {
return true;
} else if (number < arr[row][col]) {
col -= 1;
} else {
row += 1;
}
}
}
return false;
}