leetcode刷题笔记七十四题 搜索二维数组

leetcode刷题笔记七十四题 搜索二维数组

源地址:74. 搜索二维矩阵

问题描述:

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:

输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
输出: true
示例 2:

输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
输出: false

/**
由整个矩阵是递增关系,通过比较每一行最右侧值与target,获取第一个大于target的行尾,遍历该行,有则返回true,无则返回false
*/
object Solution {
    def searchMatrix(matrix: Array[Array[Int]], target: Int): Boolean = {
        
        val rowLen = matrix.length
        if(rowLen == 0) return false
        val colLen = matrix(0).length
        if(colLen == 0) return false
        for( i <- 0 to rowLen-1){
            if(matrix(i)(colLen-1) >= target){
                for(j <- 0 to colLen-1){
                    if(matrix(i)(j) == target) return true
                }
                return false
            }
        }
        return false
    }
}
posted @ 2020-07-21 17:21  ganshuoos  阅读(91)  评论(0编辑  收藏  举报