二维数组中的查找

Posted tc_goshawk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组中的查找相关的知识,希望对你有一定的参考价值。

要求描述:给你一个二维矩阵,每行从左到右递增,每列从上往下递增,给你一个val,让你判断值val是否在该矩阵中出现。

思路:从左下角,或者右上角去判断。如左下角,那么如果左下角的数字比val小,那么说明这一列已经不满足条件(因为从上往下递增),如果左下角的数字比val大,那么说明这一行不满足条件(因为从左往右递增)。

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
class Matrix{
    public:
        Matrix(){}
     //   Matrix(int _r,int _c):r(_r), c(_r) {}
        void input(){
            cin>>r >> c;
            for(int i = 0; i < r; i++){
                for(int j = 0; j < c; j++){
                    cin>>mat[i][j];
                }
            }
            cin>>val;
        }
        bool exist(){
            int cc = c;
            c = 0;
            r--;
            while(r >= 0 && c < cc){
                if(mat[r][c] == val) return true;
                else if(mat[r][c] < val){
                    c++;
                }else if(mat[r][c] > val){
                    r--;
                }
            }
            return false;
        }
        ~Matrix(){}
    private:
        int r, c, val;
        int mat[50][50];
};
int main(){

    Matrix tes;
    tes.input();
    if(tes.exist()){
        cout<<"exist"<<endl;
    }else{
        cout<<"not exist"<<endl;
    }
    return 0;
}


/*
4 4
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
7

*/

  

以上是关于二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章

二维数组中的查找

6-二维数组中的查找

剑指offer04二维数组中的查找

二维数组中的查找

[剑指Offer]5.二维数组中的查找

剑指offer-2(二维数组中的查找)