zoukankan      html  css  js  c++  java
  • LeetCode Search a 2D Matrix(二分查找)

    题意:

      有一个矩阵,每行都有序,每行接在上一行尾后仍然有序。在此矩阵中查找是否存在某个数target。

    思路:

      这相当于用一个指针连续扫二维数组一样,一直p++就能到最后一个元素了。由于用vector装的,但是也是满足线性的。

      二分:O(log n*m)

     1 class Solution {
     2 public:
     3     bool searchMatrix(vector<vector<int>>& matrix, int target) 
     4     {
     5         int n=matrix.size(), m=matrix[0].size();
     6         int L=0, R=n*m-1;
     7         while(L<R)
     8         {
     9             int mid=L+(R-L+1)/2;
    10             if(matrix[mid/m][mid%m]<=target)    L=mid;
    11             else    R=mid-1;
    12         }
    13         return matrix[L/m][L%m]==target;
    14     }
    15 };
    AC代码

      

      迭代:O(n+m)

     1 class Solution {
     2 public:
     3     bool searchMatrix(vector<vector<int>>& matrix, int target) 
     4     {
     5         int n=matrix.size(), m=matrix[0].size();
     6         int i=0, j=m-1;
     7         while(i<n && j>=0)
     8         {
     9             if(target==matrix[i][j])    return true;
    10             if(target>matrix[i][j])    i++;
    11             else    j--;
    12         }
    13         return false;
    14     }
    15 };
    AC代码
  • 相关阅读:
    闭包概念集合
    对象的基本方法
    webpack始出来
    elasticsearch性能调优
    elasticsearch 倒排索引学习
    elasticearch 归并策略
    更加详细的Log4net的配置
    第一篇博客关于Log4net的配置记录
    js数组小结
    javascript在不同的浏览器处理事件
  • 原文地址:https://www.cnblogs.com/xcw0754/p/4937391.html
Copyright © 2011-2022 走看看