矩阵(行有序、列有序)查找

矩阵查找

http://www.nowcoder.com/questionTerminal/5145394607ea4c5f8b25755718bfddba


算法:

从右上角开始找,左边的都是比它小的,下边的都是比它大的。
如果当前元素等于target,那么说明找到了,返回true;
如果当前元素大于target,那么当前元素下面的一定都比target大,所以左移;
如果当前元素小于target,那么当前元素左面的一定都比target小,所以下移;
如果最后没返回true,则返回false。

时间复杂度:

O( m + n )  m为矩阵的行数,n为矩阵的列数

Code:

public boolean searchMatrix(int[][] matrix, int target) {
    int m = matrix.length;
    int n = matrix[0].length;
    int i = 0, j = n - 1;
    while (i < m && j >= 0) {
        if (matrix[i][j] == target) {
            return true;
        } else if (matrix[i][j] > target) {
            j--;
        } else {
            i++;
        }
    }
    return false;
}


全部评论

相关推荐

网安已死趁早转行:山东这地方有点说法
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务