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

洛可可设计公司估值青岛设计优化公司

洛可可设计公司估值,青岛设计优化公司,手机网站这么做链接,在线图片编辑器好用吗💢欢迎来到张翊尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (23)最大正方形题目描述解题思路解题代码…

💢欢迎来到张翊尘的技术站
💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥

文章目录

  • 算法每日一练 (23)
    • 最大正方形
      • 题目描述
      • 解题思路
      • 解题代码
        • `c/c++`
        • `golang`
        • `lua`

官方站点: 力扣 Leetcode

算法每日一练 (23)

最大正方形

题目地址:最大正方形

题目描述

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

示例 1:

在这里插入图片描述

输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:4

示例 2:

在这里插入图片描述

输入:matrix = [["0","1"],["1","0"]]
输出:1

示例 3:

输入:matrix = [["0"]]
输出:0

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 300
  • matrix[i][j]'0''1'

解题思路

  • 首先创建辅助变量:mnmaxValdp

    • mn 分别表示矩阵的行数和列数。
    • maxVal 用于记录矩阵中最大的正方形边长,初始值为 0。
    • dp 用于记录当前行的正方形边长。
  • 紧接着,遍历矩阵的第一行,更新 maxValdp[i] 的值。这是因为第一行中的每个 '1' 都可以构成一个边长为 1 的正方形。

  • 从第二行开始,遍历矩阵的每个位置 (i, j),对于每一行的每个元素:

    • 如果是第一列(j == 0),直接将当前元素的值赋给 dp[j] 即可。
    • 否则,根据动态规划的逻辑更新 dp[j]
      • 如果当前元素是 '0',则 dp[j]0,因为无法形成正方形。
      • 如果当前元素是 '1',则 dp[j] 的值为:当前元素的上方(up)、左方(left)和左上方(lup)三个值的最小值加 1。这是因为正方形的形成需要依赖于其上方、左方和左上方的正方形边长。
  • 更新 maxVal 为当前列的最大值。

  • 最终返回 maxVal 的平方,即是满足题意的返回值。

解题代码

c/c++
#include <vector>class Solution
{
public:int maximalSquare(std::vector<std::vector<char>> &matrix){int m = matrix.size();int n = matrix[0].size();int maxVal = 0;std::vector<int> dp(n, 0);for (int i = 0; i < n; i++){dp[i] = matrix[0][i] - '0';maxVal = std::max(maxVal, dp[i]);}for (int i = 1; i < m; i++){int prev = dp[0];for (int j = 0; j < n; j++){int cur = matrix[i][j] - '0';if (j == 0)dp[j] = cur;else{int t = dp[j];if (matrix[i][j] == '0')dp[j] = 0;else{int up = t;int left = dp[j - 1];int lup = prev;dp[j] = std::min(std::min(up, left), lup) + 1;}prev = t;}maxVal = std::max(maxVal, dp[j]);}}return maxVal * maxVal;}
};
golang
func maximalSquare(matrix [][]byte) int {m := len(matrix)n := len(matrix[0])maxVal := 0dp := make([]int, n)for i := 0; i < n; i++ {dp[i] = int(matrix[0][i] - '0')maxVal = max(maxVal, dp[i])}for i := 1; i < m; i++ {prev := dp[0]for j := 0; j < n; j++ {cur := int(matrix[i][j] - '0')if j == 0 {dp[j] = cur} else {t := dp[j]if matrix[i][j] == '0' {dp[j] = 0} else {up, left, lup := t, dp[j-1], prevdp[j] = min(up, left, lup) + 1}prev = t}maxVal = max(maxVal, dp[j])}}return maxVal * maxVal
}
lua
local function maximalSquare(matrix)local m, n = #matrix, #matrix[1]local maxVal = 0local dp = {}for i = 1, n dodp[i] = matrix[1][i] - '0'maxVal = math.max(maxVal, dp[i])endfor i = 2, m dolocal prev = dp[1]for j = 1, n dolocal cur = matrix[i][j] - '0'if j == 1 thendp[j] = curelselocal t = dp[j]if matrix[i][j] == '0' thendp[j] = 0elselocal up, left, lup = t, dp[j - 1], prevdp[j] = math.min(up, left, lup) + 1endprev = tendmaxVal = math.max(maxVal, dp[j])endendreturn maxVal * maxVal
end

🌺🌺🌺撒花!

如果本文对你有帮助,就点关注或者留个👍
如果您有任何技术问题或者需要更多其他的内容,请随时向我提问。

在这里插入图片描述

http://www.dtcms.com/wzjs/204949.html

相关文章:

  • 湛江app开发公司苏州seo关键词优化外包
  • 学校网站管理系统 php百度网站优化工具
  • 龙岩网站设计理念广州seo顾问seocnm
  • 百度推广开户多少钱一个月seo线上培训多少钱
  • 网站如何做引流今日头条最新
  • 免费的国产cad宁波seo网站
  • 没网站怎么做app5年网站seo优化公司
  • 免费的正能量视频素材网站网络营销的用户创造价值
  • 电子商务网站的建设课件网络广告的特点
  • 什么样的网站适合优化seo网站推广计划
  • 做网站简历怎么写网络营销方式
  • 网站整体规划郑州seo招聘
  • wordpress主机分类信息网站seo优
  • 做编程的 网站有哪些方面一件代发48个货源网站
  • 网页设计制作公司报价浑江区关键词seo排名优化
  • asp网站开发技术网站搜索引擎优化
  • thinkphp 做网站如何接广告的平台
  • 客户在我这做的网站被罚seo效果分析
  • 石家庄哪里能制作网站信息服务平台有哪些
  • 手机网站 分辨率惠州网站关键词排名
  • wordpress网站如何加百度搜索百度人工客服24小时电话
  • 网站开发技术指标是什么百度大数据查询平台
  • 网站建设需要哪些素材克州seo整站排名
  • 松岗专业做网站公司关联词有哪些五年级
  • 网游开发培训中心seo作弊
  • 西安学校网站建设哪家专业网址ip地址查询工具
  • 做弩的网站超级软文
  • 公司介绍ppt模板免费下载seo外链建设的方法有
  • 网站制作换下面友情连接宝鸡seo外包公司
  • 设计师找工作的网站上海网络推广公司网站