Leetcode 74 Solution

This article provides solution to leetcode question 74 (search-a-2d-matrix).

https://leetcode.com/problems/search-a-2d-matrix

Solution

class Solution {
    int bsearch(const vector<int>& a, int target)
    {
        int l = 0;
        int r = a.size() - 1;
        
        while (l <= r)
        {
            int m = (l + r) / 2;
            
            if (target < a[m])
                r = m - 1;
            else
                l = m + 1;
        }
        
        return r;
    }

public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        if (matrix.size() == 0 || matrix[0].size() == 0)
            return false;

        vector<int> a;
        
        for(int i = 0; i < matrix.size(); i++)
            a.push_back(matrix[i][0]);
        
        int row = bsearch(a, target);
        
        if (row == -1)
            return false;
            
        int col = bsearch(matrix[row], target);

        if (col < matrix[row].size())
            return matrix[row][col] == target;
        else
            return false;
    }
};