美文网首页
在行列都排好序的矩阵中找数

在行列都排好序的矩阵中找数

作者: Ramsey16k | 来源:发表于2019-11-05 15:20 被阅读0次

【题目】 给定一个有N*M的整型矩阵matrix和一个整数K,
matrix的每一行和每一 列都是排好序的。实现一个函数,判断K
是否在matrix中。 例如: 0 1 2 5 2 3 4 7 4
4 4 8 5 7 7 9 如果K为7,返回true;如果K为6,返
回false。
【要求】 时间复杂度为O(N+M),额外空间复杂度为O(1)。

解题思路:

(1)从矩阵最右上角的位置开始找

(2)比较当前数与K的关系:

  • 如果相等,说明已经找到,直接返回true

  • 如果比K大,因为矩阵每一列都已经排好序,所以在当前数所在的列中,处于它下方的数都比K大,没必要继续在此列上找,列号减1,重复步骤2

  • 如果比K小,因为矩阵每一行都已经排好序,所以在当前数所在的行中,处于它左方的数都比K大,没必要继续在此行上找,行号加1,重复步骤2

(3)如果直到越界都没有发现与K相等的数,则返回false

public class FindNumInSortedMatrix {

    public static boolean isContains(int[][] matrix, int K) {
        int row = 0;
        int col = matrix[0].length - 1;
        while (row < matrix.length && col > -1) {
            if (matrix[row][col] == K) {
                return true;
            } else if (matrix[row][col] > K) {
                col--;
            } else {
                row++;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        int[][] matrix = new int[][] { { 0, 1, 2, 3, 4, 5, 6 },// 0
                { 10, 12, 13, 15, 16, 17, 18 },// 1
                { 23, 24, 25, 26, 27, 28, 29 },// 2
                { 44, 45, 46, 47, 48, 49, 50 },// 3
                { 65, 66, 67, 68, 69, 70, 71 },// 4
                { 96, 97, 98, 99, 100, 111, 122 },// 5
                { 166, 176, 186, 187, 190, 195, 200 },// 6
                { 233, 243, 321, 341, 356, 370, 380 } // 7
        };
        int K = 233;
        System.out.println(isContains(matrix, K));
    }
}

相关文章

  • 在行列都排好序的矩阵中找数

    题目描述 给定一个有N×M的整型矩阵matrix和一个整数K,matrix每行每列都排好序了。实现一个函数,判断K...

  • 在行列都排好序的矩阵中找数

    题目:给定一个有N*M的整型矩阵matrix和一个整数K, matrix的每一行和每一列都是排好序的。 实现一个函...

  • 栈、队列、矩阵、链表问题(二)

    目录 “之”字形打印 在行列都排好序的矩阵中找数 打印两个有序链表的公共部分 判断一个链表是否为回文结构 将单向链...

  • 3.矩阵和列表

    ①变换向量在数据库或矩阵中的顺序 将第四列gene向量变成第一列 矩阵创建,查看矩阵行列数,矩阵取子集,矩阵行列置...

  • P8矩阵

    矩阵 行列式 行列式可以计算方程组 用矩阵表示的便利性 数表形式 矩阵 行列式矩阵对比 行列式是一个数,矩阵是...

  • 2_18有序矩阵查找

    现在有一个行和列都排好序的矩阵,请设计一个高效算法,快速查找矩阵中是否含有值x。 给定一个int矩阵mat,同时给...

  • 高等代数理论基础28:矩阵乘积的行列式与秩

    矩阵乘积的行列式与秩 乘积的行列式 定理:设A,B是数域P上的两个矩阵,则 即矩阵乘积的行列式等于它的因子的行列式...

  • 图形学中矩阵的行主序和列主序

    矩阵的排列 矩阵在数学中的定义是 m行n列的数阵 而在图形学中,有行主序和列主序两种排列方式,行主序和标准矩阵是一...

  • Pytorch之线性代数

    矩阵 矩阵初始化 矩阵元素运算 矩阵的乘法 矩阵的转置 矩阵对应列行的最大值,最小值,和 矩阵的其他操作:行列数、...

  • test

    [TOC] 创建矩阵(采用ndarray对象) 获取矩阵行数列数(二维情况) 矩阵的截取 按行列截取 按条件截取 ...

网友评论

      本文标题:在行列都排好序的矩阵中找数

      本文链接:https://www.haomeiwen.com/subject/edmubctx.html