240. 搜索二维矩阵 II

54 阅读1分钟

题目

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

题目链接

分析

技巧题,类似于九宫格走路,典型的贪心问题。从右上角开始走,若大于target 往左走,若小于target,往下走,若走出边界还没遇到target,则矩阵没有目标值

fun searchMatrix(matrix: Array<IntArray>, target: Int): Boolean {
    if (matrix.isEmpty()) return false
    var i = 0
    var j = matrix[0].lastIndex
    while (j >= 0 && i < matrix.size) {
        when {
            matrix[i][j] == target -> break
            matrix[i][j] < target -> i++
            matrix[i][j] > target -> j--
        }
    }
    return j >= 0 && i < matrix[0].size
}

关于我

一个希望友友们能提出建议的代码下毒糕手