[LeetCode]74. Search a 2D Matrix

本文介绍了一种在具有特定特征的二维数组中查找特定值的高效算法,通过比较目标值与每行末尾的数字来定位目标值所在行,进而在该行中进行查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意: 从一个二维数组中找出是否存在某一个值,数组特征,每一行从左到右依次增大并且下一行的第一个数字大于上一行的最后一个数字
思路: 不知道直接暴力能不能过,不过可以想到,利用数组的特征,将目标数字与每一行末尾的数字进行比较能够找到目标数字所在的行,然后在遍历该行即可,时间复杂度O(m+n)
代码:

public boolean searchMatrix(int[][] matrix, int target) {
     if(matrix.length == 0){
        return false;
     }
     int row = -1, hei = matrix.length, wid = matrix[0].length;
     for(int i = 0; i < hei; ++i){
        if(target <= matrix[i][wid - 1]){
            row = i;
            break;
        }
     }
     if(row == -1){
        return false;
     }
     for(int i = 0; i < wid; ++i){
        if(target == matrix[row][i]){
            return true;
        }
     }
     return false;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值