编写一个高效的算法来判断 m x n
矩阵中,是否存在一个目标值。该矩阵具有如下特性:
- 每行中的整数从左到右按升序排列。
- 每行的第一个整数大于前一行的最后一个整数。
bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) { const int m = matrixSize, n = *matrixColSize; int l = 0, r = m * n; while (l < r) { int m = (l + r) >> 1 ; int val = *(*(matrix + m / n) + m % n); if (val == target){ return true; } if (val < target){ l = m + 1; }else{ r = m; } } return false; }
时间复杂度O(mn)
空间复杂度O(1)
-
暴力算法,不推荐