zoukankan      html  css  js  c++  java
  • 从有序矩阵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;
        }
        
        
    }
  • 相关阅读:
    Struts2文件上传和下载
    Struts2自定义类型转换器
    struts2数据处理的几种方式
    Struts2常量_Action配置路径_通配符
    Struts框架
    struts入门
    Log4J日志组件
    处理文件上传与下载
    文件上传
    国际化和本地化
  • 原文地址:https://www.cnblogs.com/moris5013/p/11635781.html
Copyright © 2011-2022 走看看