JZ4 二维数组中的查找

题目地址
题意:给定二维数组和一个数,保证该二维数组横向和纵向都是严格递增,求其中有没有出现这个数。要求时间复杂度 O(n+m) ,空间复杂度 O(1)。
思路:由于对于矩阵中的任何一个数,其右边的数都比它大,上面的数都比它小,所以我们从矩阵的左下角开始搜索,如果当前数大于给定的数,则往上走,小于就往右走,如果走出矩阵则表示没有。

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        int n=(int)array.size();
        int m=(int)array[0].size();
        int tx=n-1;
        int ty=0;
        while(tx>=0&&ty>=0&&tx<n&&ty<m)
        {
            if(target==array[tx][ty]) return true;
            if(target>array[tx][ty]) ty++;
            else tx--;
        }
        return false;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值