【leetcode】240. 搜索二维矩阵 II

37 阅读1分钟

leetcode-240.png

其实这一题,主要的是处理从哪里搜索的问题,如果从左上角来进行搜索,这里就比较难处理了
如果当前的数字current < target,此时应该是向右还是向下搜索,这里就产生了分歧
所以这里可以直接从右上角来进行搜索

  • 如果当前元素等于目标值,返回 true
  • 如果当前元素大于目标值,说明当前列的其他元素也都比目标值大,因此可以排除当前列,列索引减一。
  • 如果当前元素小于目标值,说明当前行的其他元素也都比目标值小,因此可以排除当前行,行索引加一。
var searchMatrix = function (matrix, target) {
    let row = 0, col = matrix[0].length - 1
    while (row < matrix.length && col >= 0) {
        if (matrix[row][col] === target) {
            return true
        } else if (matrix[row][col] < target) {
            row++
        } else if (matrix[row][col] > target) {
            col--
        }
    }
    return false
};