[Python] Explained Simple Solution, 100% Faster
\nclass Solution:\n    def searchMatrix(self, matrix, target):\n        ## RC ##\n        ## APPROACH : GREEDY ##\n        ## Similar to Leetcode: 74. Search A 
```\nclass Solution:\n    def searchMatrix(self, matrix, target):\n        ## RC ##\n        ## APPROACH : GREEDY ##\n        ## Similar to Leetcode: 74. Search A 2D Matrix ##\n        \n        # 1. First, we initialize a (row, col) pointer to the bottom-left of the matrix.\n        # 2. If the currently-pointed-to value is larger than target we can move one row "up". \n        # 3. Otherwise, if the currently-pointed-to value is smaller than target, we can move one column "right".\n        \n\t\t## TIME COMPLEXITY : O(N + M) ##\n\t\t## SPACE COMPLEXITY : O(1) ##\n                \n        i, j = len(matrix) - 1, 0\n        while(i >= 0 and i < len(matrix) and j >=0 and j < len(matrix[0])):\n            if(matrix[i][j] == target): return True\n            if(matrix[i][j] > target):  i -= 1\n            if(matrix[i][j] < target):  j += 1              \n        return False\n```
['Python', 'Python3']