C/C++教程

LeetCode 74 Search a 2D Matrix 二分

本文主要是介绍LeetCode 74 Search a 2D Matrix 二分,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Write an efficient algorithm that searches for a value target in an m x n integer matrix 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.

Solution

将整个矩阵当成一个序列,然后进行二分

点击查看代码
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int n = matrix.size();
        int m = matrix[0].size();
        
        int l = 0, r = n*m-1;
        int mid;
        while(l<r){
            mid = (l+r)>>1;
            if(matrix[mid/m][mid%m]<target)l = mid+1;
            else r = mid;
        }
        return matrix[r/m][r%m]==target;
    }
};
这篇关于LeetCode 74 Search a 2D Matrix 二分的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!