zoukankan      html  css  js  c++  java
  • Search a 2D Matrix

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:

    • Integers in each row are sorted from left to right.
    • The first integer of each row is greater than the last integer of the previous row.

    For example,

    Consider the following matrix:

    [
      [1,   3,  5,  7],
      [10, 11, 16, 20],
      [23, 30, 34, 50]
    ]
    

    Given target = 3, return true.

    1.迭代

    class Solution {
    public:
        bool searchMatrix(vector<vector<int>>& matrix, int target) {
            int m = matrix.size();
            int n = m==0 ? 0:matrix[0].size();
            int i=0,j=n-1;
            while(i<m && j>=0){
                if(matrix[i][j] < target) i++;
                else if(matrix[i][j] > target) j--;
                else return true;
            }
            return false;
        }
    };

    2.递归

    class Solution {
    public:
        bool searchMatrix(vector<vector<int>>& matrix,int r,int c,int target){
            if(c<0 || r >= matrix.size()){
                return false;
            }
            if(matrix[r][c]>target){
                return searchMatrix(matrix,r,c-1,target);
            }else if(matrix[r][c]<target){
                return searchMatrix(matrix,r+1,c,target);
            }else{
                return true;
            }
        }
        
        bool searchMatrix(vector<vector<int>>& matrix, int target) {
            int m = matrix.size();
            if(m==0){
                return false;
            }
            int n = matrix[0].size();
            return searchMatrix(matrix,0,n-1,target);
        }
    };
  • 相关阅读:
    abstract和virtual
    vue中 关于$emit的用法
    babel简介
    vue脚手架的使用
    RAM和ROM
    判断匿名类是否继承父类
    ABP应用层——参数有效性验证
    vue-devtools的安装与使用
    JavaScript中Object.keys用法
    vue中created、mounted、 computed,watch,method 等方法整理
  • 原文地址:https://www.cnblogs.com/zengzy/p/5005720.html
Copyright © 2011-2022 走看看