蓝桥04数组矩阵

04数组矩阵

顺时针打印二维数组

0所在行列清零

z字形打印二维数组

找出边界为1的最大子方针

返回子数组最大累加和

子矩阵最大累加和

矩阵运算

顺时针打印二维数组

        int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16},{17,18,19,20}};
        int r = 0;
        int c = 0;
        int lowr = 0,highr=arr.length-1;
        int lowc = 0,highc=arr[0].length-1;
        while(lowr<highr||lowc<highc){
            while(c<highc){
                System.out.println(arr[r][c++]);
            }
            while(r<highr){
                System.out.println(arr[r++][c]);
            }
            while(c>lowc){
                System.out.println(arr[r][c--]);
            }
            while(r>lowr){
                System.out.println(arr[r--][c]);
            }
            r++;
            c++;
            lowr++;
            lowc++;
            highr--;
            highc--;

0所在行列清零

        int[][] arr = {{1,2,0,0},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
        int m = arr.length;
        int n = arr[0].length;
        int[] row = new int[m];
        int[] col = new int[n];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(arr[i][j]==0){
                    row[i]=1;
                    col[j]=1;
                }
            }
        }
        for(int i=0;i<m;i++){
            if(row[i]==1){
                for(int j=0;j<n;j++){
                    arr[i][j]=0;
                }
            }
        }
        for(int j=0;j<n;j++){
            if(col[j]==1){
                for(int i=0;i<m;i++){
                    arr[i][j]=0;
                }
            }
        }

z字形打印二维数组

        int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
        int m = arr.length;
        int n = arr[0].length;
        int r=0,c=0;
        while(true){
            if(c==n-1){
                System.out.println(arr[r++][c]);
                while(c>0&&r<m-1&&c<n-1){
                    System.out.println(arr[r++][c--]);
                }
            }else if(r==0){
                System.out.println(arr[r][c++]);
                while(c>0&&r<m-1&&c<n-1){
                    System.out.println(arr[r++][c--]);
                }
            }
            if(r==m-1){
                System.out.println(arr[r][c++]);
                while(r>0&&r<m-1&&c<n-1){
                    System.out.println(arr[r--][c++]);
                }
            }else if(c==0){
                System.out.println(arr[r++][c]);
                while(r>0&&r<m-1&&c<n-1){
                    System.out.println(arr[r--][c++]);
                }
            }
            if(r>=m-1&&c>=n-1)break;
        }

找出边界为1的最大子方阵

        int[][] arr = {{0,1,1,1,1,1},{0,1,0,0,1,1},{0,1,0,0,1,1},{0,1,1,1,1,1},{0,1,0,1,1,1}};
        int m = arr.length;
        int n = arr[0].length;
        int[][][] f = new int[m][n][3];
        f[0][0][0] = f[0][0][1] = arr[0][0];
        for(int i=1;i<m;i++){
            f[i][0][0] = arr[i][0];
            if(arr[i][0]==1){
                f[i][0][1] = f[i-1][0][1]+1;
            }
        }
        for(int j=1;j<n;j++){
            f[0][j][0] = arr[0][j];
            if(arr[0][j]==1){
                f[0][j][1] = f[0][j-1][1]+1;
            }
        }

        for(int i=1;i<m;i++){
            for(int j=1;j<n;j++){
                if(arr[i][j]==1){
                    f[i][j][0] = f[i][j-1][0]+1;
                    f[i][j][1] = f[i-1][j][1]+1;
                    f[i][j][2] = Math.min(f[i][j][0],f[i][j][1]);
                }
            }
        }
        int max = 0;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                max = Math.max(f[i][j][2],max);
            }
        }
        System.out.println(max);

返回子数组最大累加和

        int[] arr = {1,-2,3,5,-2,6,-1};
        int l=0,r=0;
        int sum = 0;
        int max = sum;
        while(r<arr.length){
            if(sum+arr[r]<arr[r]){
                l = r;
                sum = 0;
            }
            sum+=arr[r];
            max = Math.max(max,sum);
            r++;
        }
        System.out.println(max);

子矩阵最大累加和

矩阵运算

相关推荐

  1. 04数组矩阵

    2024-03-20 05:30:06       43 阅读
  2. 杯 压缩矩阵

    2024-03-20 05:30:06       59 阅读
  3. 杯-子矩阵

    2024-03-20 05:30:06       51 阅读
  4. 题目 1908: 杯-矩阵相乘

    2024-03-20 05:30:06       36 阅读
  5. 集训之子矩阵

    2024-03-20 05:30:06       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-20 05:30:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-20 05:30:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-20 05:30:06       87 阅读
  4. Python语言-面向对象

    2024-03-20 05:30:06       96 阅读

热门阅读

  1. C# 使用ffmpeg将图片保存为mp4视频

    2024-03-20 05:30:06       42 阅读
  2. Ollama 在本地快速启动并执行LLM【大语言模型】

    2024-03-20 05:30:06       42 阅读
  3. gitlab runner没有内网的访问权限应该怎么解决

    2024-03-20 05:30:06       39 阅读
  4. 单片机-点亮LED灯

    2024-03-20 05:30:06       47 阅读
  5. 使用动态日志简化开发时间

    2024-03-20 05:30:06       49 阅读
  6. 前端工程化(三)邂逅Webpack和打包过程

    2024-03-20 05:30:06       37 阅读
  7. 自动化单元测试 Automatic Test Generation

    2024-03-20 05:30:06       36 阅读