zoukankan      html  css  js  c++  java
  • m*n矩阵中判断目标值是否存在的算法(二分法)

    题目描述
    请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征:
    每一行的数字都从左到右排序
    每一行的第一个数字都比上一行最后一个数字大
    例如:
    对于下面的矩阵:
    [
    [1, 3, 5, 9],
    [10, 11, 12, 30],
    [230, 300, 350, 500]
    ]
    要搜索的目标值为3,返回true;
    示例1
    输入
    复制
    [[1,3,5,9],[10,11,12,30],[230, 300, 350, 500]],3
    返回值
    复制
    true

    
    class Solution {
    public:
        /**
         * 
         * @param matrix int整型vector<vector<>> 
         * @param target int整型 
         * @return bool布尔型
         */
        bool searchMatrix(vector<vector<int> >& matrix, int target) {
             
            // write code here
            int m = matrix.size(),n = matrix[0].size();
            int l = 0, r = m*n -1, mid = 0;
            while (l<= r) {
               mid = l + (r-l)/2;
               int i = mid/n, j = mid % n;
               if (matrix[i][j] == target) return true;
               else if(matrix[i][j] > target) r  = mid -1;
               else l = mid + 1;
            }
            return false;
        }
    };
    
  • 相关阅读:
    javascript实现限制上传文件的大小
    js事件
    表格展开伸缩以及ztree异步加载
    二分法
    php操作beanstalkd
    ubuntu安装操作HttpSQS高速队列
    mysql中安全函数
    php操作httpsqs
    jquery操作表单
    ajax长轮询实例
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/14066595.html
Copyright © 2011-2022 走看看