最大正方形问题

article/2025/10/22 18:34:20

最大正方形问题

作者:Grey

原文地址:

博客园:最大正方形问题

CSDN:最大正方形问题

题目描述

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

题目链接见:LeetCode 221. Maximal Square

主要思路

本题思路比较简单,可以定义一个二维数组dp,二维数组dp的规模和原始矩阵的规模一样。

int m = matrix.length;
int n = matrix[0].length;
int[][] dp = new int[m][n];

其中dp[i][j]表示正方形必须以 i, j 作为右下角的情况下,哪个正方形内部都是 1 且最大

有一个很显而易见的结论,如果matrix[i][j] == '0',则dp[i][j] = 0,接下来是 base case,

第一行和第一列的值很容易可以得到

  for (int i = 0; i < m; i++) {dp[i][0] = matrix[i][0] == '1' ? 1 : 0;max = Math.max(dp[i][0], max);
}
for (int i = 0; i < n; i++) {dp[0][i] = matrix[0][i] == '1' ? 1 : 0;max = Math.max(dp[0][i], max);
}

注:max变量用于记录全局最大值。

考虑普遍位置,如下图

img

观察dp[i][j]周围的位置依赖,有如下两种情况

img

img

其中dp[i-1][j]表示的区域是绿色部分的正方形,dp[i-1][j-1]表示的区域是红色部分的正方形,dp[i][j-1]表示蓝色区域部分的正方形,基于上述上个位置的值,可以得到dp[i][j]的值,即dp[i][j]依赖其左边一个位置,上面一个位置,左上角位置

代码如下

        for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = matrix[i][j] == '1' ? Math.min(Math.min(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]) + 1 : 0;max = Math.max(dp[i][j], max);}}

完整代码见

class Solution {public int maximalSquare(char[][] matrix) {if (null == matrix || matrix.length == 0 || matrix[0].length == 0) {return 0;}int m = matrix.length;int n = matrix[0].length;int max = 0;// tips 正方形必须以i,j作为右下角情况,哪个正方形内部都是1且最大int[][] dp = new int[m][n];for (int i = 0; i < m; i++) {dp[i][0] = matrix[i][0] == '1' ? 1 : 0;max = Math.max(dp[i][0], max);}for (int i = 0; i < n; i++) {dp[0][i] = matrix[0][i] == '1' ? 1 : 0;max = Math.max(dp[0][i], max);}for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = matrix[i][j] == '1' ? Math.min(Math.min(dp[i - 1][j - 1], dp[i - 1][j]), dp[i][j - 1]) + 1 : 0;max = Math.max(dp[i][j], max);}}return max * max;}
}

更多

算法和数据结构笔记


http://chatgpt.dhexx.cn/article/5Y8WYaF2.shtml

相关文章

搞懂正方体展开图

正方体的对称性 观察一个正方体的6个面. 这6个面对于正方体来说是对称的, 这里的对称并非几何或视觉上的对称, 而是一种抽象的对称. 换句话说, 为了研究正方体面的性质, 我们可以任意选择一个面, 对于这个指定面的研究结果, 可以复制到其他5个面上. 因为在指定某一个面之前, 这…

RFM模型以及案例

一.RFM模型定义 百度百科定义:**RFM模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中&#xff0c;RFM模型是被广泛提到的。该机械模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱3项指标来描述该客户的价值状况.* *简…

数据分析——RFM模型

目录 一、RFM模型概述R值&#xff1a;最近一次消费&#xff08;Recency&#xff09;F值&#xff1a;消费频率&#xff08;Frequency&#xff09;M值&#xff1a;消费金额&#xff08;Monetary&#xff09; 二、基于RFM模型的实践应用1、基于RFM模型进行客户细分2、通过RFM模型评…

RFM模型与Spark实现

RFM模型与Spark实现 RMF模型什么是RMF模型给R、F、M按价值打分基于RFM模型的用户价值划分 代码实现 RMF模型 什么是RMF模型 R最近一次消费时间&#xff1a;R越小&#xff0c;客户价值越高F消费频率&#xff1a;F值会受到品类的影响&#xff0c;不适合做跨类目比较M消费金额&a…

RFM模型实战

什么是RFM模型 RFM模型是衡量客户价值和客户创利能力的重要工具。该模型通过一个客户的近期购买行为、购买的总体频率&#xff0c;以及花了多少钱三项指标来描述该客户的价值状况。 如何构建RFM模型 最近一次消费 (Recency) 最近一次消费意指上一次购买的时间——用户上一次…

RFM模型总结

RFM模型 1. 什么是RFM模型&#xff1f;2. RFM有什么作用&#xff1f;3. 怎么构建RFM模型 1. 什么是RFM模型&#xff1f; RFM名词解释 R&#xff1a;最近一次消费&#xff08;recency&#xff09; 代表用户距离当前最后一次消费的时间 反向值 R越大 用户价值越低F&#xff1a;消…

tableau-RFM模型

解释 R-最近一次消费&#xff08;Recency&#xff09;&#xff0c;通常影响因素为店铺的记忆强度&#xff0c;接触机会的多少&#xff0c;回购周期等。这个指标会用于决定客户接触策略&#xff0c;接触频次&#xff0c;刺激力度等。 F-消费频率&#xff08;Frequency&#xf…

【笔记】电商RFM模型

一、理论基础 &#xff08;1&#xff09;RFM模型 R&#xff1a;Recency 最近一次购买–付款日期-按照买家昵称 groupby 取付款日期的信息 F&#xff1a;Frequency 购买频次-付款日期-按照买家昵称 groupby 取付款曰期次数 M&#xff1a;Monetary 购买金额-实付金额-按照买家…

RFM模型分析

1.RFM的重要意义 RFM模型是衡量用户价值和用户创利能力的重要工具和手段 通过用户的近期交易行为、交易频次以及交易金额三个指标描述客户价值 指标解释意义 R(Recency) 用户最近一次交易的时间间隔R值越大&#xff0c;表示越久没有发生交易 F(Frequency) 用户在最近一段…

RFM 模型

RFM 模型 顾客价值分析 顾客价值分析 由于激烈的市场竞争&#xff0c;各个公司相继推出了多样灵活的优惠方式来吸引更多的客户。 对一个没有购买力的顾客&#xff0c;你打电话推销优惠活动毫无作用&#xff0c;可一个高价值顾客&#xff0c;会说有优惠活动怎么不通知我呢&…

数据分析八大模型:详解RFM模型

大家好&#xff0c;我是爱学习的小xiong熊妹。 今天跟大家分享的是一个经常被提及&#xff0c;但是价值被严重低估的模型&#xff1a;RFM模型。 一、RFM的基本思路 RFM模型由三个基础指标组成&#xff1a; R&#xff1a;最近一次消费至今的时间 F&#xff1a;一定时间内重复…

线性代数:如何求特征值和特征向量?

一、特征值和特征向量的定义 1 首先让我们来了解一下特征值和特征向量的定义&#xff0c;如下&#xff1a; 2 特征子空间基本定义&#xff0c;如下&#xff1a; END 二、特征多项式 1 特征多项式的定义&#xff0c;如下&#xff1a; 2 推论&#xff1a;n阶方阵A可逆的充…

如何用计算机求特征值特征向量,利用QR算法求解矩阵的特征值和特征向量

利用QR算法求解矩阵的特征值和特征向量 为了求解一般矩阵(不是那种幼稚到shi的2 x 2矩阵)的特征值. 根据定义的话,很可能需要求解高阶方程... 这明显是个坑...高阶方程你肿么破... 折腾了好久 1.我要求特征值和特征向量. 2.找到一种算法QR分解矩阵求解特征值 3.QR矩…

【考研线代】五. 特征值和特征向量

文章目录 第五章 特征值和特征向量5.1 特征值&#xff0c;特征向量5.1.1 概念5.1.2 性质 & 定理 & 推论 ⭐5.1.3 求特征值和特征向量的方法数值型矩阵抽象型矩阵巧解矩阵特征值方法⭐ 5.2 相似矩阵5.2.1 概念5.2.2 性质5.2.3 求可逆矩阵P使得A可相似对角化方法 5.3 实对…

线性代数特征值

特征值的性质&#xff1a; 下面是例题&#xff1a; 要注意单位阵的特征值是替换成1 注意下面两个&#xff1a; 例题5&#xff1a; 仔细看解题过程。 例题6&#xff1a; 运用了特征值相加等于矩阵主对角线元素之和 、特征值相乘等于矩阵的行列式、求特征值的定义。列出以上三…

eigen求特征值和特征向量

Eigen::Matrix2d matrix_22;matrix_22 << 2,3,2,1;cout << "matrix \n"<< matrix_22<<endl;//Eigen::SelfAdjointEigenSolver<Eigen::Matrix2d> eigen_solver1 ( matrix_22 );/这句是啥不清楚Eigen::EigenSolver<Eigen::Matrix2d&…

特征多项式法(characteristic polynomial )求特征值(结合lanczos和householder)(python,数值积分)

第三十四篇 特征多项式法求对称三对角矩阵的特征值 特征多项式 在之前的篇章中介绍过的&#xff0c;一个矩阵的特征值可以形成一个n阶多项式的根&#xff0c;称为“特征多项式”。线性方程的求解方法可以用来求这些根&#xff0c;详情可以翻看我之前写过的文章。但这并不是一…

Matlab求特征值和特征向量 + find函数的基本简单用法

A[1 5 4; 3 2 1;5 6 6] 计算矩阵A的特征值和特征向量的函数是eig&#xff08;A&#xff09;&#xff0c;常用方法为&#xff1a; 1.求矩阵的特征值 每一列有一个特征值&#xff0c;可知A有三个特征值 设矩阵A的全部特征值构成向量E Eeig(A) 执行选中内容命令行窗口如下&…

Eigen求特征值与特征向量

这里列举三种方式求矩阵的特征值与特征向量 #include <stdio.h> #include <stdlib.h> #include<Eigen/Eigen>using namespace std; using namespace Eigen;void main() {MatrixXd m(3, 3);m << 1,-2,2,-2,-2,4,2,4,-2;cout << m << endl …

matlab 求特征值的命令,matlab怎么求特征值

matlab怎么求特征值&#xff1f; 求矩阵的特征值和特征向量方法 方法/步骤 第一步我们首先需要知道计算矩阵的特征值和特征向量要用eig函数&#xff0c;可以在命令行窗口中输入help eig&#xff0c;查看一下eig函数的用法&#xff0c;如下图所示&#xff1a; 第二步在命令行窗口…