# 74-Search a 2D Matrix ###### tags: `Medium` ## Question https://leetcode.com/problems/search-a-2d-matrix/ ## Key ## Reference ## Solution ### Binary search solution ```cpp= class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if(matrix.size() == 0) return false; int m = matrix.size(), n = matrix[0].size(), l = 0, r = m * n - 1; while(l <= r){ int mid = l + (r - l) / 2; int val = matrix[mid/n][mid%n]; if(val > target) r = mid - 1; else if(val < target) l = mid + 1; else return true; } return false; } }; ``` ### Iterative solution ```cpp= class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if (matrix.empty() || matrix[0].empty()) return false; int i = 0, j = (int)matrix[0].size() - 1; while (i < matrix.size() && j >= 0) { if (matrix[i][j] == target) return true; else if (matrix[i][j] > target) --j; else ++i; } return false; } }; ```