240. 搜索二维矩阵 II

69 阅读1分钟

240. 搜索二维矩阵 II

解题思路

根据题意. 矩阵每一行(列)符合递增. 即, 如果每一行(列)的最后一项小于目标值, 即, 当前行(列)不存在目标值 我们从 矩阵的右上角[0, cols-1]开始搜索 如果 matrix[x][y] === target 则找到目标值 如果 matrix[x][y] < target 因为x行是递增的(且从右上角开始,当前x为当前行最大值)则当前x行的元素都小于target. 则 x + 1 如果 matrix[x][y] > target 因为y列是递增的(且从右上角开始,当前y为当前列最小值)则当前y列的元素都大于target. 则 y - 1

代码

/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var searchMatrix = function (matrix, target) {
  const rows = matrix.length // 行数
  if (rows === 0) return false
  const cols = matrix[0].length // 列数
  if (cols === 0) return false

  let [x, y] = [0, cols - 1]
  while (x < rows && y >= 0) {
    if (matrix[x][y] === target) return true
    matrix[x][y] < target ? (x += 1) : (y -= 1)
  }
  return false
}