当前位置: 首页 > news >正文

Leetcode面试经典150题-221.最大正方形

  解法都在代码里,不懂就留言或者私信

class Solution {/**本题一看就是典型的动态规划,要找以每个点为右下角的正方形的面积,然后取最大的这个题要注意找规律,我找到的规律如下:1.以第一行为右下角的,因为正方形是边长相同的,所以第一行为右下角最大正方形只能是自己,自己是1就是1,不是1就是02. 以第一列为右下角的也是一样。3. 以普通位置为右下角的最大正方形,首先看自己是不是1,如果自己不是1,那就肯定是0,如果自己是1,取它的左上、左、上三个点的最小面积,加1就是它的解自己可以多画几个二维矩阵找找规律*/public int maximalSquare(char[][] matrix) {/**空矩阵的校验,健壮性校验 */if(matrix == null || matrix.length == 0 || matrix[0].length == 0) {return 0;}/**如果矩阵只有一个数字,那就是0最大面积就是0,是'1'最大面积就是1*/if(matrix.length == 1 && matrix[0].length == 1) {return matrix[0][0] == '1'? 1 : 0;}/**其他的不过多枚举了,直接动态规划解吧,dp[i][j]代表以(i,j)为右下角的最大正方形的边长*/int[][] dp = new int[matrix.length][matrix[0].length];/**定义最大值变量 */int maxArea = 0;/**初始化第一行和第一列*/for(int j = 0; j < dp[0].length; j++) {dp[0][j] = matrix[0][j] == '1'? 1 : 0;/**这里其实是dp[0][j]* dp[0][j],反正最大就是1,懒得写了 */maxArea = Math.max(maxArea, dp[0][j]);}for(int i = 1; i < dp.length; i++) {dp[i][0] = matrix[i][0] == '1'? 1 : 0;/**这里其实是dp[i][0]* dp[i][0],反正最大就是1,懒得写了 */maxArea = Math.max(maxArea, dp[i][0]);}/**初始化普通位置 */for(int i = 1; i < dp.length; i++) {for(int j = 1; j < dp[i].length; j++) {if(matrix[i][j] == '1') {dp[i][j] = matrix[i][j] == '1'? Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1])) + 1 : 0;maxArea = Math.max(maxArea, dp[i][j]*dp[i][j]);}}}return maxArea;}
}

 相信我这就是最优解,矩阵就是m*n,你不过完能知道答案吗

http://www.lryc.cn/news/431096.html

相关文章:

  • 51单片机-DS1302,操作简述
  • Vue3+Vite+Echarts 出现Missing semicolon错误
  • iOS——frame和bounds的区别
  • Trm理论 3(注意力机制)
  • Vue2和Vue3项目创建的区别和 element ui 和element plus的导入方式
  • 基于STM32的猫狗宠物喂养系统设计(微信小程序)(215)
  • spark读取csv文件
  • 钢铁百科:Q420DR力学性能、Q420DR执行标准、Q420DR低温容器钢板
  • 三菱机器人手柄维修示教器维修手操器面板等
  • 中间件的学习理解总结
  • 编程秘密武器:提升工作效率的关键工具
  • Git+word记笔记
  • java-antrl手敲命令的hello world
  • 法规探讨 | 《医疗器械管理法(草案征求意见稿)》初探(1)
  • 大语言模型的上下文窗口(Context Windows):对人工智能应用的影响
  • Java【数组】
  • xAI巨无霸超级计算机上线:10万张H100 GPU,计划翻倍至20万张
  • python集合
  • 算法打卡 Day29(回溯算法)-复原 IP 地址 + 子集 + 子集 Ⅱ
  • LeetCode 热题100-17 缺失的第一个正数
  • 基于CloudflareSpeedTest项目实现git clone加速
  • 对与单纯post方法写项目的修改成baseservlet方法
  • 北京地铁换乘站人流量监控与图像识别技术优化
  • Day16_0.1基础学习MATLAB学习小技巧总结(16)——元胞数组
  • C#自定义控件的放置与拖动
  • python circular import python循环导入问题
  • kafka集群安装
  • SQL通用语法、SQL分类以及DDL
  • 静态链接和动态链接
  • 构建智能门禁安防系统:树莓派 4B、OpenCV、SQLite 和 MQTT 的应用(代码示例)