Python solution using divide and conquer
O(n^1.58), the formula is T(n) = 3T(n/2) + c.\n\n\tdef helper(matrix, rowStart, rowEnd, colStart, colEnd, target):\n            if(rowStart > rowEnd) | (colStar
O(n^1.58), the formula is T(n) = 3T(n/2) + c.\n```\n\tdef helper(matrix, rowStart, rowEnd, colStart, colEnd, target):\n            if(rowStart > rowEnd) | (colStart > colEnd):\n                return False\n            rowMid = (rowStart + rowEnd) // 2\n            colMid = (colStart + colEnd) // 2\n            if(matrix[rowMid][colMid] == target):\n                return True\n            elif (matrix[rowMid][colMid] > target):\n                return helper(matrix, rowStart, rowMid - 1, colStart, colMid - 1, target) | helper(matrix, rowMid, rowEnd, colStart, colMid - 1, target) | helper(matrix, rowStart, rowMid - 1, colMid - 1, colEnd, target)\n            else:\n                return helper(matrix, rowMid + 1, rowEnd, colMid + 1, colEnd, target) | helper(matrix, rowMid + 1, rowEnd, colStart, colMid, target)| helper(matrix, rowStart, rowMid, colMid + 1, colEnd, target)\n\n        if not matrix or len(matrix) < 1 or len(matrix[0]) < 1:\n            return False\n\trow, col = len(matrix), len(matrix[0])\n        return helper(matrix, 0, row - 1, 0, col - 1, target)\n        \n```
[]