首页 > 其他分享 >重新排列后的最大子矩阵

重新排列后的最大子矩阵

时间:2023-08-28 23:11:52浏览次数:30  
标签:java 最大 int 矩阵 width 重新排列 import maxArea matrix

 

思路

1、计算每个位置上方连续1的个数,表示该位置的行高

2、将每一行进行排序,以该行为底,计算每一列的位置索引与行款的关系表示底边长(width = )

3、计算面积

代码

 

import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

/**
 *
 */
public class Main {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int res = solution.largestSubmatrix(new int[][] {
            {1, 0, 1},
            {0, 1, 1},
            {1, 1, 0}
        });
        System.out.println(res);
    }
}
class Solution {
    public int largestSubmatrix(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        // 计算每一行中每个位置上方连续的 1 的个数
        for (int i = 1; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (matrix[i][j] == 1) {
                    matrix[i][j] += matrix[i - 1][j];
                }
            }
        }
        int maxArea = 0;
        // 对于每一行,将该行作为矩阵的底部,计算以该行为底部的最大矩形面积
        for (int[] ints : matrix) {
            Arrays.sort(ints); // 对每一行的元素进行排序
            for (int j = n - 1; j >= 0; j--) {
                int width = n - j;
                int height = ints[j];
                maxArea = Math.max(maxArea, width * height);
            }
        }
        return maxArea;
    }
}

 

 

 

 

标签:java,最大,int,矩阵,width,重新排列,import,maxArea,matrix
From: https://www.cnblogs.com/Adam-Ye/p/17663646.html

相关文章

  • 一般图最大匹配
    匈牙利算法寻找的增广路是有向的,其中匹配边的方向唯一,故匈牙利算法适配二分图的匹配。对于存在奇环的一般图,匹配边在增广路中的方向不唯一,不符合匈牙利算法中“一个点不能被访问两次”的限制,故一般图最大匹配不能使用匈牙利算法。带花树算法一般图与二分图区别在于奇环的有......
  • python中输出键最大、最小的项
     001、输出键最大的项a、>>>dict1={"c":30,"a":40,"b":80,"d":20,"e":60}>>>dict1{'c':30,'a':40,'b':80,'d':20,'e':60}>>&......
  • python中输出字典中值最大或最小的项
     001、输出值最大的项a、>>>dict1={"c":30,"a":40,"b":80,"d":60}##测试字典>>>dict1{'c':30,'a':40,'b':80,'d':60}>>>max_value=max(dict......
  • 《线性代数》3. 矩阵,线性代数中最重要的概念
    什么是矩阵前面我们介绍了向量,它是线性代数中最基本的元素,但提到线性代数,估计更多人第一时间想到的是矩阵(Matrix)。\(\begin{Bmatrix}1&2&3&4\\5&6&7&8\\9&10&11&12\end{Bmatrix}\)如果说向量是对数的拓展,一个向量表示一组数,那么矩阵就是对向量的拓展,一......
  • 一般图最大匹配学习笔记
    Uoj#79LuoguP6113带花树算法(匈牙利算法\(Pro~max\))我们考虑现在访问到\(u\)点(黑色),\(u\)连向\(v\)点,分类讨论\(v\)点。1、\(v\)点没有被匹配过,直接令\(u\)点和\(v\)点匹配,然后更新答案2、\(v\)点匹配过,但之前还未被访问过,那么把\(v\)点染成白色,然后把\(v\)......
  • 在传球游戏中最大化函数值
    给你一个长度为n下标从0开始的整数数组receiver和一个整数k总共有n名玩家,玩家编号互不相同,且为[0,n-1]中的整数。你需要从n名玩家中选择一名玩家作为游戏开始时唯一手中有球的玩家,球会被传恰好k次定义函数f(x)表示从编号为x的玩家开始,k次传球内所有......
  • 最大子矩阵和
    Blah数集大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下:(1)a是集合Ba的基,且a是Ba的第一个元素;(2)如果x在集合Ba中,则2x+1和3x+1也都在集合Ba中;(3)没有其他元素在集合Ba中了。现在小高斯想知道如果将集合Ba中元素按照升序排列,第N个元素会是......
  • 绘制矩阵散点图
    什么是矩阵散点图当我们想要探索两组变量之间的关系时,矩阵散点图是一种有用的可视化工具。它能够帮助我们快速地观察多个变量之间的关联性,特别是在统计分析和数据挖掘领域中。矩阵散点图实际上是由多个散点图组成的矩阵,每个散点图表示两个不同变量之间的关系。绘制矩阵散点图......
  • 行列式、矩阵树定理
    推荐阅读:矩阵树定理(+行列式)-command_block的博客。行列式定义这个东西一般用于求解图的生成树个数(矩阵树定理)。称一个大小为\(n\timesn\)的矩阵\(A\)的行列式为\(\det(A)\)(或\(|A|\))。\[\det(A)=\sum_{p\texttt{是一个大小为n排列}}(-1)^{F(p)}\prod_{i=1}^{n}A......
  • 数组章节的进阶54. 螺旋矩阵
    54. 螺旋矩阵1classSolution:2defspiralOrder(self,matrix:List[List[int]])->List[int]:3m,n=len(matrix),len(matrix[0])4res=[]#存放遍历后的结果5startx=starty=067foroffsetinrange(min(m,......