题目
- 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
- leetcode链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/
思路
- 特点是:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。所以可从右上角的数进行对比。
官方解法
/**
* @param {number[][]} matrix
* @param {number} target
* @return {boolean}
*/
var findNumberIn2DArray = function (matrix, target) {
if (!matrix.length || !matrix[0].length) return false
const maxRowIndex = matrix.length - 1
const maxColumnIndex = matrix[0].length - 1
let i = 0
let j = maxColumnIndex
while (i <= maxRowIndex && j >= 0) {
if (matrix[i][j] === target) {
return true
} else if (target < matrix[i][j]) {
j--
} else {
i++
}
}
return false
};