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);
        }
    };
  • 相关阅读:
    BZOJ4675: 点对游戏
    Codeforces 1097 Alex and a TV Show
    UOJ#349. 【WC2018】即时战略
    DNS解析过程详解
    js中bind、call、apply函数的用法
    jQuery.extend 函数详解
    JQuery Mobile
    JQuery Mobile 页面参数传递
    HTML div 滚动条样式设计
    JavaScript 加载动画Canvas 设计
  • 原文地址:https://www.cnblogs.com/zengzy/p/5005720.html
Copyright © 2011-2022 走看看