問:在一個(gè)二維數(shù)組中,每一行都是從左到右遞增的排列順序岸更,每一列都是從上到下遞增的排列順序。 請寫一個(gè)函數(shù)硕并,實(shí)現(xiàn)輸入一個(gè)二維數(shù)組和整數(shù)法焰,判斷數(shù)組中是否含有該整數(shù)。
解:簡述思路 - 選取該二維數(shù)組最右上角的數(shù)字元素倔毙,如果該數(shù)字等于輸入的數(shù)字埃仪,查找結(jié)束;如果該數(shù)字大于輸入的數(shù)字陕赃,則忽略該數(shù)字所在的列卵蛉;反之,如果該數(shù)字小于輸入的數(shù)字么库,則忽略該數(shù)字所在的行傻丝。
代碼實(shí)現(xiàn)如下(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;
}