← All problems

74. Search a 2d Matrix

MediumOpen on LeetCodeProblem statement

Problem Statement

74. Search a 2D Matrix

Medium


You are given an m x n integer matrix matrix with the following two properties:

Given an integer target, return true if target is in matrix or false otherwise.

You must write a solution in O(log(m * n)) time complexity.

 

Example 1:

Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
Output: true

Example 2:

Input: matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13
Output: false

 

Constraints:

C++

Source file
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        int m = matrix.size(), n = matrix[0].size();
        // if(!m || !n)    return false;
        int lo=0, hi=m*n-1, mid, i, j;
        while(lo<=hi){
            mid = (lo+hi)/2;
            i=mid/n, j=mid%n;
            if(target==matrix[i][j])
                return true;
            else if(target<matrix[i][j])
                hi = mid-1;
            else lo = mid+1;
        }
        return false;
    }
};