从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)
Posted moris5013
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)相关的知识,希望对你有一定的参考价值。
有序指的是每行从左到右依次变大,每列从上到下依次变大
思路: 从右上顶点开始依次判断当前值与给定值的大小,往左下顶点移动,结束条件是下标超过范围
public class FindNumInOrderMatr public static void main(String[] args) int[][] matrix = new int[][] 10, 12, 13, 15, 16, 17, 18 , 23, 24, 25, 26, 27, 28, 29 , 44, 45, 46, 47, 48, 49, 50 , 65, 66, 67, 68, 69, 70, 71 , 96, 97, 98, 99, 100, 111, 122 , 166, 176, 186, 187, 190, 195, 200 , 233, 243, 321, 341, 356, 370, 380 ; int k = 96; System.out.println(isContains(matrix, k)); private static boolean isContains(int[][] matrix, int k) int aR = 0; int aC = matrix[0].length -1 ; while(aR <= matrix.length-1 && aC >= 0) if(matrix[aR][aC] > k) aC --; else if(matrix[aR][aC] < k) aR ++; else return true; return false;
以上是关于从有序矩阵M x N中找出是否包含某一个数,要求时间复杂度为O(M+N)的主要内容,如果未能解决你的问题,请参考以下文章
2022-01-20: 矩形区域不超过 K 的最大数值和。 给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一