力扣面试150 最大正方形 二维DP 记忆化搜索 DFS

news/2024/10/21 9:09:35/

Problem: 221. 最大正方形
在这里插入图片描述

👨‍🏫 参考题解
在这里插入图片描述

class Solution {public int maximalSquare(char[][] matrix) {// base condition: 如果矩阵为空,直接返回面积为 0if (matrix == null || matrix.length < 1 || matrix[0].length < 1) {return 0;}int height = matrix.length;  // 获取矩阵的高度int width = matrix[0].length;  // 获取矩阵的宽度int maxSide = 0;  // 用于存储当前找到的最大正方形的边长// 创建 dp 数组,dp[i][j] 表示以 (i-1, j-1) 为右下角的正方形的最大边长// 这里的 dp 数组多一行和多一列,用来处理边界情况,避免复杂的 if 判断int[][] dp = new int[height + 1][width + 1];  // 遍历矩阵中的每个格子for (int row = 0; row < height; row++) {for (int col = 0; col < width; col++) {// 只有当前格子为 '1' 时,才能形成正方形if (matrix[row][col] == '1') {// 核心思路:如果当前格子是 '1',且上、左、左上格子也是 '1',// 那么以当前格为右下角的最大正方形边长// = 上、左、左上三个方向的最小边长 + 1。dp[row + 1][col + 1] = Math.min(Math.min(dp[row + 1][col], dp[row][col + 1]),  // 左、上dp[row][col]  // 左上) + 1;// 更新 maxSide,记录最大的边长maxSide = Math.max(maxSide, dp[row + 1][col + 1]);}}}// 最后返回最大正方形的面积,面积 = 边长 * 边长return maxSide * maxSide;}
}

http://www.ppmy.cn/news/1538470.html

相关文章

阿里云的Qwen2.5-Coder 和 Qwen2.5-Math专有模型怎么样?

阿里云发布Qwen2.5 系列模型&#xff0c;最新发布的 Qwen2.5 系列中包括普通的大语言模型 (LLM) 以及针对编程和数学的专用模型&#xff1a;Qwen2.5-Coder 和 Qwen2.5-Math。 包括&#xff1a; Qwen2.5: 0.5B、1.5B、3B、7B、14B、32B 和 72BQwen2.5-Coder: 1.5B、7B 和 32B&…

【云从】三、计算机网络基础

文章目录 1、网络2、网络通信2.1 IP地址2.2 子网掩码2.3 网关2.4 私有地址和公有地址2.5 NAT网络地址转换 3、网络架构及设备 1、网络 网络&#xff0c;即通过通信线路&#xff08;如光纤、网线&#xff09;和通信设备&#xff08;如路由器、光猫&#xff09;&#xff0c;将各…

Python大数据学习之Hadoop学习——day08_hive函数

一.hive查询 语法结构&#xff1a; SELECT [ALL | DISTINCT] 字段名&#xff0c;字段名,... FROM 表名 [inner | left outer | right outer | full outer | left semi join 表名 on 关联条件] [where 非聚合条件] [GROUP BY 分组字段名] [HAVING 聚合条件] [ORDER BY 排序字段…

【前端】 常用的版本控制符号汇总

前端的版本控制符主要用于管理前端项目中依赖包的版本。它们通常在package.json文件中定义&#xff0c;帮助开发者指定所需的库和框架的版本范围。以下是一些关键概念&#xff1a; 版本控制符号详解&#xff1a; 1. 依赖管理 在前端开发中&#xff0c;依赖管理工具&#xff…

Python Enhancement Proposals,Python 增强提案

PEPs&#xff08;Python Enhancement Proposals&#xff0c;Python 增强提案&#xff09;是 Python 社区提出的建议文档&#xff0c;用于描述 Python 新特性的设计、语言的改进、核心开发过程中的重要问题或信息。PEP 是 Python 开发过程中的核心机制之一&#xff0c;用来记录对…

每天一个数据分析题(五百零五)- 提升方法

提升方法&#xff08;Boosting&#xff09;&#xff0c;是一种可以用来减小监督式学习中偏差的机器学习算法。基于Boosting的集成学习&#xff0c;其代表算法不包括&#xff1f; A. Adaboost B. GBDT C. XGBOOST D. 随机森林 数据分析认证考试介绍&#xff1a;点击进入 题…

什么是矩阵系统,怎么选择矩阵系统,怎么oem贴牌,怎么源码搭建

一、架构设计方面 采用微服务架构 将矩阵系统拆分为多个小型的、独立的服务模块。每个微服务专注于特定的业务功能&#xff0c;如用户管理、内容发布、数据分析等。这样可以独立地开发、部署和扩展每个服务&#xff0c;而不会影响整个系统。例如&#xff0c;当用户量增加导致用…

Sequelize 做登录查询数据

在 Sequelize 中处理登录请求通常意味着你需要根据提供的用户名或电子邮件以及密码来查询数据库中的用户。由于密码在数据库中应该是以哈希形式存储的&#xff0c;因此你还需要验证提供的密码是否与存储的哈希密码匹配。 以下是一个简单的例子&#xff0c;展示了如何使用 Sequ…