其他分享
首页 > 其他分享> > [LeetCode] 240. Search a 2D Matrix Ⅱ(矩阵搜索之二)

[LeetCode] 240. Search a 2D Matrix Ⅱ(矩阵搜索之二)

作者:互联网

Description

Write an efficient algorithm that searches for a target value in an m x n integer matrix. The matrix has the following properties:
设计一个高效算法,判断一个给定值 target 是否存在于给定的 m x n 整数矩阵 matrix 中。matrix 具有以下属性:

Examples

Example 1

Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
Output: true

Example 2

Input: matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
Output: false

Constraints

Solution

这题的关键点在于初始点的选取,一开始我傻乎乎地把起始点放在正中心,结果发现怎么搜也搜不了。discussion 里给出的一个解法是以左上角作为起始点:

代码如下:

class Solution {
    fun searchMatrix(matrix: Array<IntArray>, target: Int): Boolean {
        if (matrix.isEmpty() || matrix[0].isEmpty()) {
            return false
        }
        var row = 0
        var col = matrix[0].lastIndex
        
        while (row < matrix.size && col >= 0) {
            val curValue = matrix[row][col]
            if (target == curValue) {
                return true
            } else if (target > curValue) {
                row++
            } else {
                col--
            }
        }
        return false
    }
}

标签:Search,Matrix,target,ascending,2D,matrix,each,sorted,row
来源: https://www.cnblogs.com/zhongju/p/14055429.html