


Input: ‘M’ = 3, 'N' = 4, ‘mat’ = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]], ‘target’ = 8
Output: true
Explanation: The output should be true as '8' exists in the matrix.
The first line contains three space-separated integers 'M', 'N', and ‘target’ where 'M' and 'N' denote the number of rows and columns of the 'mat', respectively, and ‘target’ is the integer to be found.
From the second line, the next 'M' lines represent the rows of the 'mat'. Every row contains 'N' single space-separated integers.
Return 'true' if ‘target’ is present in the 'mat'; else, return 'false'.
You do not need to print anything. It has already been taken care of. Just implement the function.
Can you solve this problem in less than O(M*N) time complexity?
We have a brute force solution to this problem. We can simply traverse the matrix and check if ‘TARGET’ exists or not.
Since every row of the given matrix is sorted and the first element of row ‘i’ is greater than the last element of row ‘i-1’ (if exist), all the M*N elements of the matrix are arranged in an ascending order.
The intuition behind this approach is that since we can map indices of a matrix to an array, we can treat the given matrix as an array/list of M*N sorted integers.
We map the indices of matrix elements to a 1D array as follows :
Now, we simply use binary search to find the ‘TARGET’.
Sorted Doubly Linked List to Balanced BST
Largest Plus Sign
Minimum Operations to Form Letter Y
Matrix Block Sum
Minimized Maximum of Products Distributed to Any Store