leetcode 240: 搜索二维矩阵 II

本文深入探讨了一种在二维矩阵中查找特定目标值的算法。该算法通过逐步比较和缩小搜索范围,有效地在矩阵中定位目标元素。文章详细阐述了算法的实现逻辑,包括初始化条件、边界检查以及循环迭代过程中的关键判断条件。

没有想到好的方法

bool searchMatrix(std::vector<std::vector<int>>& matrix, int target) {
    int h=matrix.size();
    if(h==0)
        return false;
    int w=matrix[0].size();
    if(w==0)
        return false;
    int i=0;
    int j=0;
    if(target<matrix[0][0])
        return false;
    else if(target==matrix[0][0])
        return true;
    while(i<h-1&&j<w-1){
        if(target>matrix[i+1][j+1])
        {
            i++;
            j++;
        }
        else if(target==matrix[i+1][j+1])
            return true;
        else if(target<matrix[i+1][j+1])
        {
            for(int k1=0;k1<i+1;k1++){
                if(target==matrix[k1][j+1])
                    return true;
            }
            for(int k1=0;k1<j+1;k1++){
                if(target==matrix[i+1][k1])
                    return true;
            }
            break;
        }
    }

    if(h>2)
        i=i+2;
    if(w>2)
        j=j+2;
        if(i<h){
            for(;i<h;i++){
                for(int k1=0;k1<w;k1++){
                    if(matrix[i][k1]==target)
                        return true;
                }
            }
        }

        if (j < w) {
            for (; j < w; j++) {
                for (int k1 = 0; k1 < h; k1++) {
                    if (matrix[k1][j] == target)
                        return true;
                }
            }
        }
    return false;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值