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;
        }
    };
    
  • 相关阅读:
    BeautifulSoup
    python爬虫操作excel
    requests
    urllib
    线程的基本用法
    WebView
    播放多媒体文件
    调用摄像头和相册
    03 pycharm编辑默认模板
    测试
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/14066595.html
Copyright © 2011-2022 走看看