精华内容
下载资源
问答
  • public class MaximalRectangle { public MaximalRectangle(){} public int maximalRectangle(char[][] matrix) ... if(matrix.length == 0 || matrix[0].length == 0) {return 0;} int maxarea= 0; i...

    public class MaximalRectangle
    {
    public MaximalRectangle(){}

    public int maximalRectangle(char[][] matrix) 
    {   
    	if(matrix.length == 0 || matrix[0].length == 0)
        {return 0;}
        
    	int maxarea= 0;
    	int[][] temp= new int[matrix.length][matrix[0].length];
    	
    	for(int i=0;i<matrix.length;i++)
    	{
    		for(int j=0;j<matrix[0].length;j++)
    		{
    			if(i==0)
    			{temp[i][j]= matrix[i][j] - 48;}
    			else
    			{
    				temp[i][j]= (matrix[i][j] == '0') ? 0 : (temp[i-1][j] + 1);
    			}
    			
    			int min= temp[i][j];
    			for(int k=j;k>=0;k--)
    			{
    				if(min == 0) {break;}
    				if(min > temp[i][k])
    				{min= temp[i][k];}
    				maxarea= Math.max(maxarea, min * (j - k + 1));
    			}
    		}
    	}
    	return maxarea;
    }
    

    }

    展开全文
  • 本题源自LeetCode ----------------------------------------------------...直方图的最大面积:用一个堆栈做数据结构,如果堆栈为空就将下标压栈,如果栈顶元素大于要入栈的元素,就将所有比入栈元素大的弹出,计算面

    本题源自LeetCode

    -----------------------------------------------------------------

    思路:

    用求直方图的最大面积求解。

    遍历二维数组。统计当前行及以上的直方图,然后计算。保存最大面积。

    直方图的最大面积:用一个堆栈做数据结构,如果堆栈为空就将下标压栈,如果栈顶元素大于要入栈的元素,就将所有比入栈元素大的弹出,计算面积。

    int maximalRectangle(vector<vector<char> > &matrix) {
            /*
            if(matrix.size()==0 || matrix[0].size()==0){
                return 0;
            }*/
            
            
            int rows=matrix.size();
            int cols=0;
            if(rows!=0)   //先判断rows 不等于0 ,如果等于0,matrix是NULL,不能对其做下标运算。才能做下面的matrix【0】,否则包段错误。
            	cols=matrix[0].size();
            
            if(rows==0 || cols==0)
                return 0;
            
            int result=0;
                
            for(int i=0;i<rows;i++){
                vector<int> h(cols,0);
                for(int j=0;j<cols;j++){ 
                    int r=i;
                    while(r>=0 && matrix[r][j] == '1' ){    //统计直方图。当前行及以上的1的个数,按列. 
                        h[j]++;
                        r--;
                    }
                }
                result=max(result,largeRectangleArea(h));
            }
            return result;
        }  
        //计算直方图的最大面积
        int largeRectangleArea(vector<int>& h){
           h.push_back(0);   //方便计算最后一个直方图
            stack<int> s;
            int result=0;
            for(int i=0;i<h.size();){
                if(s.empty()||h[i]>=h[s.top()]){
                    s.push(i);
                    i++;
                }else{
                    int temp=s.top();
                    s.pop();
                    result=max(result,(s.empty()?i:i-1-s.top())*h[temp]);
                }
            }
            return result;
        }


    展开全文
  • 给定一个二维二进制输入矩阵,该函数可帮助您获得适合所有非零点的紧密边界框。
  • MATLAB 生成二进制序列矩阵

    千次阅读 2019-02-19 10:24:55
    写了MATLAB的方程,作用为...给定参数 n,将 n 以内的自然数转化为二进制,生成共 2^n 个二进制序列,并存储与矩阵中。 例如:当 n=3,生成矩阵为:  0 0 0  0 0 1  0 1 0  0 1 1  1 0 0  1 ...

    写了个MATLAB的方程,作用为生成二级制序列的脚本。

    给定参数 n,将 n 以内的自然数转化为二进制,生成共 2^n 个二进制序列,并存储与矩阵中。

    例如:当 n=3,生成矩阵为:

         0     0     0
         0     0     1
         0     1     0
         0     1     1
         1     0     0
         1     0     1
         1     1     0
         1     1     1

    MATLAB脚本:

    % MALTAB Script
    % Generate binary matrix by n
    % Author: quarter26 (Anda)
    
    function b = binaryMatrix(n)
    a = zeros(2^n, n);
    b = zeros(2^n,1);
    for i = 0 : (2^n-1)
        c = dec2bin(i,n);
        for j = 1 : n
            b((i+1), j)= str2double(c(j));
        end
    end

     

    展开全文
  • 一个0 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 1 2 3 4 5 6 7 8 来源:力扣(LeetCode) 链接:...

    题目

    在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。

    示例:

    输入: 
    
    1 0 1 0 0
    1 0 1 1 1
    1 1 1 1 1
    1 0 0 1 0
    
    输出: 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/maximal-square
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    分析

    动态规划思想:将一个问题划分为N个子问题,逐个解析子问题,前一个子问题的输出作为下一个子问题的输入,直到解决第N个子问题,就是该问题的解。

    该题有些技巧,使用DP的方法解题。

    • 所有由1组成的正方形,它的右下角一定是1;
    • 假设最大正方形的右下角坐标为(i, j)(下面简称以(i, j)为右下角的最大正方形为(i, j)),那么:
    • (i - 1, j) 也一定是一个正方形,并且其边长 = len(i, j) - 1;
    • (i, j - 1)也一定是一个正方形,并且其边长 = len(i, j) - 1;
    • (i - 1, j - 1)也一定是一个正方形,并且其边长 = len(i, j) - 1;
    • 若以上3种正方形的边长都为alen(i, j) = a + 1;若以上边长分别为a,b,c,则len(i, j) = min(a, b, c) + 1。因为如果取最大值,则有可能正方形的三个角会缺一个角,则不能构成正方形;
    • 若当前值为0,则不构成正方形,边长则为0;

    DP的规则我们已经找到了,即需要一个记录当前点为右下角的正方形的边长矩阵,然后逐步求解,每次记录最长边长的正方形,遍历完成后计算面积即可。

    class Solution {
    public:
        /**
         * 最大正方形
         * @param matrix char字符型vector<vector<>> 
         * @return int整型
         */
        int solve(vector<vector<char> >& matrix) {
            // write code here
            int len = 0;
            if(matrix.size() ==0 || matrix[0].size() == 0)
                return 0;
            vector<vector<int>> dp(matrix.size(), vector<int>(matrix[0].size(), 0));
            for(int i = 0; i < matrix.size(); ++i){
                for(int j = 0; j < matrix[0].size(); ++j){
                    if(matrix[i][j] == '1'){
                        if(i == 0 || j == 0){
                            dp[i][j] = 1;
                        }else {
                            dp[i][j] = min(min(dp[i][j - 1], dp[i - 1][j]), dp[i - 1][j - 1])  + 1;
                        }
                        len = max(len, dp[i][j]);
                    }
                }
                
            }
            return len * len;
        }
    };

     

    展开全文
  • 给出一个包含0和1二维矩阵,找出最大的全部元素都是1的长方形区域,返回该区域的面积。 思路:结合计算直方图中最大矩形的面积的思路,将在二维矩阵中找出最大的全部元素都是1的长方形区域的问题转换为求每行...
  • 二维矩阵求最大矩形

    2021-04-20 20:02:48
    给定一个仅包含 0 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 题目描述很简单。这里只介绍一种易于理解的方法。新建一个二维数组dp。dp中每个值表示,从当前位置开始往...
  • 给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix = [ [1,2,3]...
  • 二进制串翻转过来,想象把其下标标记到矩阵的每一个元素上 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 用(i, j)扫描上面抽象出来的矩阵,将坐标(i, j)转化为二进制串的对应的下标 二进制
  • LeetCode 1091. 二进制矩阵中的最短路径(BFS)

    千次阅读 热门讨论 2020-05-09 23:26:57
    一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。 一条从左上角到右下角、长度为 k 的畅通路径, 由满足下述条件的单元格 C_1, C_2, ..., C_k 组成: 相邻单元格 C_i C_{i+1} 在八个...
  • 给定一个仅包含 0 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 示例 1: 输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,...
  • 本题源自LeetCode --------------------------...思路1 遍历整个数组,遇到0 就把整行整列不为0 的值置为* ,然后再次遍历数组把* 换为0 void setZeroes(vector > &matrix) { int rows=matrix.size(); int col
  • 二维哈希-矩阵

    2020-03-09 22:20:36
    二维哈希-矩阵 一维哈希: 在一维哈希中,我们是将长度长度为n的序列哈希成长度为n的一个P进制数...在二维哈希中,就是将n×m的序列哈希成一个长度为n×m的P进制数,依然是高位在前。在二维哈希中,就是将n×m的序...
  • 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行列的所有元素都设为 0。请使用原地算法。 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 示例 2: 输入: [ ...
  • 本文通过一个实例,具体讲解在python中,map()函数、lambda函数、二进制移位的使用方法,非常实用。
  • 给定一个无序矩阵,其中只有1和0两种值,求只含有1的最大正方形的大小。 例如给定如下矩阵: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 Return 4 int max_square(vector>& matrix) { int row = matrix....
  • 156. 矩阵[二维的hash]

    2020-07-27 15:11:00
    给定一个M行N列的01矩阵(只包含数字01矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。输入格式第一行四个整数M,N,A,B。接下来一个M行N列的01矩阵,数字之间没有空格。...
  • 给定一个M行N列的01矩阵(只包含数字01矩阵),再执行Q次询问,每次询问给出一个A行B列的01矩阵,求该矩阵是否在原矩阵中出现过。 输入格式 第一行四个整数M,N,A,B。 接下来一个M行N列的01矩阵,数字之间没有...
  • 【LeetCode】﹝前缀ி﹞维、二维前缀应用

    千次阅读 多人点赞 2021-05-31 09:12:12
    文章目录【LeetCode】﹝前缀ி﹞维、二维前缀应用在区间范围内统计奇数数目★区域检索 - 数组不可变★★子数组异或查询★★定长子串中元音的最大数目★★生存人数★★二维区域检索 - 矩阵不可变★★矩阵...
  • 思路:用一个visited列表保存已经找过的点,对没找的点,如果是1,用递归方式按上下左右四个方向找可以连在一起的点,存入一个列表,不断比较这个列表长度之前保存的最大值来更新最大区域面积。 import sys M,...
  • 二维数组练习01

    2021-02-28 23:30:15
    //给定一个仅包含 0 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。 class Solution { public int maximalRectangle(char[][] matrix) { int row = matrix.length; if(row =...
  • 问题: 在一个n1*n2的二维字符组成中搜寻一个给定的m1*m2的模式。参考《算法导论》习题32.2-3. 分析: 1. 首先简单介绍一下Rabin-Karp算法 Rabin-Karp算法是一种字符串匹配算法,它的主要思想是预先计算出模式串的...
  • 题目: Given a 2D binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area. Example: Input: 1 0 1 0 0 1 0 1 1 1 ...给定一个包含0和1...
  • 文章目录二维哈希思想AcWing-156....之前,我们已经可以把一维数组映射成一个数了。如下: 数组名 元素 哈希值 A 1,5,6,9,8,4,0,5,6,8,4,5,6,9,8,7,4 15698405684569874 B 5,9,8,4,7,0,2,5,6,9,4,5
  • 题目描述: 给定一个二维矩阵包含 ‘X’ ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 解释: 被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ ...
  • 前言 很多面试算法题都涉及0 ...一个矩阵中只有0和1两种值, 每个位置都可以自己的上、 下、 左、 右 四个位置相连, 如果有一片1连在一起, 这个部分叫做一个岛, 求一个 矩阵中有多少个岛? 举例: 0 0 1 ...
  • 比如第次是 20=12^0 = 120=1,第次是 20+21=32^0 + 2^1=320+21=3, 第三次是 20+21+22=72^0 + 2^1 + 2^2=720+21+22=7,以此类推,元组的第二个部分表示的就是在这次迭代中新增的项,第次迭代的新增项是 ...
  • Given a 2D binary matrix filled with 0’s and 1’s, find the largest rectangle containing only 1’s and return its area. Example: Input: [ [“1”,“0”,“1”,“0”,“0”], [“1”,“0”,“1”,“1”,“1...
  • 今天是昨天的升级版求好几汉明距离的综合。 法: 思路分析: 根据昨天的异或统计‘1’的方法。这道题很容易的就可以得到思路。直接暴力循环, List = [4, 14, 2] res = 0 for i in range(len(List)-1): for j in ...
  • 博文将原第三讲分为四部分来讲解:1、旋转矩阵和变换矩阵;2、旋转向量表示旋转;3、欧拉角表示旋转;4、四元数表示变换。本文相对于原文会适当精简,同时为便于理解,会加入一些注解补充知识点,本篇为第部分:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,557
精华内容 5,022
关键字:

给定一个仅包含0和1的二维二进制矩阵