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

商标查询官方入口seo百度关键字优化

商标查询官方入口,seo百度关键字优化,企业官网门户网站管理系统,网站后台 行间距调整本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,还会用多种编程语言实现题解,涉及到通用解法时更将归纳总结出相应的算法模板。

为了方便在PC上运行调试、分享代码文件,我还建立了相关的仓库:https://github.com/memcpy0/LeetCode-Conquest。在这一仓库中,你不仅可以看到LeetCode原题链接、题解代码、题解文章链接、同类题目归纳、通用解法总结等,还可以看到原题出现频率和相关企业等重要信息。如果有其他优选题解,还可以一同分享给他人。

由于本系列文章的内容随时可能发生更新变动,欢迎关注和收藏征服LeetCode系列文章目录一文以作备忘。

给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。

示例 1:

输入:matrix =
[[0,1,1,1],[1,1,1,1],[0,1,1,1]
]
输出:15
解释:
边长为 1 的正方形有 10 个。
边长为 2 的正方形有 4 个。
边长为 3 的正方形有 1 个。
正方形的总数 = 10 + 4 + 1 = 15.

示例 2:

输入:matrix = 
[[1,0,1],[1,1,0],[1,1,0]
]
输出:7
解释:
边长为 1 的正方形有 6 个。 
边长为 2 的正方形有 1 个。
正方形的总数 = 6 + 1 = 7.

提示:

  • 1 <= arr.length <= 300
  • 1 <= arr[0].length <= 300
  • 0 <= arr[i][j] <= 1

解法 动态规划/递推(最优)

本题和 221. 最大正方形 非常类似,使用的方法也几乎相同。

我们用 d p [ i ] [ j ] dp[i][j] dp[i][j] 表示 ( i , j ) (i,j) (i,j) 为右下角的正方形的最大边长,那么除此定义之外, d p [ i ] [ j ] = x dp[i][j] = x dp[i][j]=x 也表示 ( i , j ) (i,j) (i,j) 为右下角的正方形的数目为 x x x(即边长为 1 , 2 , . . . , x 1, 2, ..., x 1,2,...,x 的正方形各一个)。在计算出所有的 d p [ i ] [ j ] dp[i][j] dp[i][j] 后,我们将它们进行累加,就可以得到矩阵中正方形的数目

我们尝试挖掘 d p [ i ] [ j ] dp[i][j] dp[i][j] 与相邻位置的关系来计算出 d p [ i ] [ j ] dp[i][j] dp[i][j] 的值。

如上图所示,若对于位置 ( i , j ) (i,j) (i,j) d p [ i ] [ j ] = 4 dp[i][j] = 4 dp[i][j]=4 ,我们将以 ( i , j ) (i,j) (i,j) 为右下角、边长为 4 4 4 的正方形涂上色,可以发现其左侧位置 ( i , j − 1 ) (i, j - 1) (i,j1) ,上方位置 ( i − 1 , j ) (i - 1, j) (i1,j) 和左上位置 ( i − 1 , j − 1 ) (i - 1, j - 1) (i1,j1) 均可以作为一个边长为 4 − 1 = 3 4 - 1 = 3 41=3 的正方形的右下角。也就是说,这些位置的的 d p dp dp 值至少为 3 3 3 ,即:

dp[i][j - 1] >= dp[i][j] - 1
dp[i - 1][j] >= dp[i][j] - 1
dp[i - 1][j - 1] >= dp[i][j] - 1

将这三个不等式联立,可以得到:
min ⁡ ( d p [ i ] [ j − 1 ] , d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − 1 ] ) ≥ d p [ i ] [ j ] − 1 \min\big(dp[i][j - 1],\ dp[i - 1][j],\ dp[i - 1][j - 1]\big) \geq dp[i][j] - 1 min(dp[i][j1], dp[i1][j], dp[i1][j1])dp[i][j]1

这是我们通过固定 d p [ i ] [ j ] dp[i][j] dp[i][j] 的值,判断其相邻位置与之的关系得到的不等式。同理,我们也可以固定 d p [ i ] [ j ] dp[i][j] dp[i][j] 相邻位置的值,得到另外的限制条件

如上图所示,假设 d p [ i ] [ j − 1 ] dp[i][j - 1] dp[i][j1] d p [ i − 1 ] [ j ] dp[i - 1][j] dp[i1][j] d p [ i − 1 ] [ j − 1 ] dp[i - 1][j - 1] dp[i1][j1] 中的最小值为 3 3 3 ,也就是说, ( i , j − 1 ) (i, j - 1) (i,j1) ( i − 1 , j ) (i - 1, j) (i1,j) ( i − 1 , j − 1 ) (i - 1, j - 1) (i1,j1) 均可以作为一个边长为 3 3 3 的正方形的右下角。我们将这些边长为 3 3 3 的正方形依次涂上色,可以发现,如果位置 ( i , j ) (i,j) (i,j) 的元素为 1 1 1 ,那么它可以作为一个边长为 4 4 4 的正方形的右下角, d p dp dp 值至少为 4 4 4 ,即:
d p [ i ] [ j ] ≥ min ⁡ ( f [ i ] [ j − 1 ] , f [ i − 1 ] [ j ] , f [ i − 1 ] [ j − 1 ] ) + 1 dp[i][j] \geq \min\big(f[i][j - 1], f[i - 1][j], f[i - 1][j - 1]\big) + 1 dp[i][j]min(f[i][j1],f[i1][j],f[i1][j1])+1
将其与上一个不等式联立,可以得到:
d p [ i ] [ j ] = min ⁡ ( d p [ i ] [ j − 1 ] , d p [ i − 1 ] [ j ] , d p [ i − 1 ] [ j − 1 ] ) + 1 dp[i][j] = \min\big(dp[i][j - 1], dp[i - 1][j], dp[i - 1][j - 1]\big) + 1 dp[i][j]=min(dp[i][j1],dp[i1][j],dp[i1][j1])+1
这样我们就得到了 d p [ i ] [ j ] dp[i][j] dp[i][j] 的递推式。此外还要考虑边界( i = 0 i = 0 i=0 j = 0 j = 0 j=0)以及位置 ( i , j ) (i,j) (i,j) 的元素为 0 0 0 的情况。

我们按照行优先的顺序依次计算 d p [ i ] [ j ] dp[i][j] dp[i][j] 的值,就可以得到最终的答案。

class Solution {
public:int countSquares(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();vector<vector<int>> dp(m + 1, vector<int>(n + 1));int ans = 0;for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (matrix[i][j] == 1) {dp[i + 1][j + 1] = 1 + min(dp[i][j], min(dp[i][j + 1], dp[i + 1][j]));ans += dp[i + 1][j + 1];}}}return ans;}
};

由于递推式中 d p [ i ] [ j ] dp[i][j] dp[i][j] 只与本行和上一行的若干个值有关,因此空间复杂度可以优化至 O ( N ) O(N) O(N)

class Solution {
public:int countSquares(vector<vector<int>>& matrix) {int m = matrix.size(), n = matrix[0].size();vector<int> dp(n + 1);int ans = 0;int pre = 0, temp = 0;for (int i = 0; i < m; ++i) {for (int j = 0; j < n; ++j) {if (matrix[i][j] == 1) {temp = dp[j + 1];dp[j + 1] = 1 + min(pre, min(dp[j + 1], dp[j]));pre = temp; // pre为dp[i][j]ans += dp[j + 1];} else pre = dp[j + 1], dp[j + 1] = 0; // 注意此时也要记录dp[i][j],并更新dp[i+1][j+1]}}return ans;}
};

复杂度分析:

  • 时间复杂度: O ( m n ) O(mn) O(mn)
  • 空间复杂度: O ( n ) O(n) O(n)

文章转载自:
http://wanjiapga.xkzr.cn
http://wanjiatragi.xkzr.cn
http://wanjiaintermediary.xkzr.cn
http://wanjiamazda.xkzr.cn
http://wanjiaphoneticise.xkzr.cn
http://wanjiadolabriform.xkzr.cn
http://wanjiaadpress.xkzr.cn
http://wanjiabackwards.xkzr.cn
http://wanjiaparapeted.xkzr.cn
http://wanjiaauxilytic.xkzr.cn
http://wanjiablotting.xkzr.cn
http://wanjiaantihelium.xkzr.cn
http://wanjiamanfully.xkzr.cn
http://wanjiaunhappen.xkzr.cn
http://wanjiablasted.xkzr.cn
http://wanjiagenocide.xkzr.cn
http://wanjiamatsu.xkzr.cn
http://wanjiagreenockite.xkzr.cn
http://wanjiatoxigenic.xkzr.cn
http://wanjiajesuitism.xkzr.cn
http://wanjiamultiuser.xkzr.cn
http://wanjiaintervision.xkzr.cn
http://wanjiaexternalise.xkzr.cn
http://wanjiaastromantic.xkzr.cn
http://wanjiaamenably.xkzr.cn
http://wanjiacandock.xkzr.cn
http://wanjiaperfectionism.xkzr.cn
http://wanjiaenvironmentalism.xkzr.cn
http://wanjiawmo.xkzr.cn
http://wanjiasanman.xkzr.cn
http://wanjiausmc.xkzr.cn
http://wanjiapetrissage.xkzr.cn
http://wanjiadecongest.xkzr.cn
http://wanjiafess.xkzr.cn
http://wanjiaunchancy.xkzr.cn
http://wanjiaamoebean.xkzr.cn
http://wanjiaintermingle.xkzr.cn
http://wanjiathessaly.xkzr.cn
http://wanjialarvivorous.xkzr.cn
http://wanjiadesmotropism.xkzr.cn
http://wanjiataz.xkzr.cn
http://wanjiapouch.xkzr.cn
http://wanjiakink.xkzr.cn
http://wanjiastadholder.xkzr.cn
http://wanjiapostform.xkzr.cn
http://wanjiacybernation.xkzr.cn
http://wanjiatambourin.xkzr.cn
http://wanjiamoveless.xkzr.cn
http://wanjiavistavision.xkzr.cn
http://wanjiadenver.xkzr.cn
http://wanjiaheitiki.xkzr.cn
http://wanjiagimlety.xkzr.cn
http://wanjiawasherette.xkzr.cn
http://wanjiawapenshaw.xkzr.cn
http://wanjiacist.xkzr.cn
http://wanjiacourier.xkzr.cn
http://wanjiacabala.xkzr.cn
http://wanjiaparasiticidal.xkzr.cn
http://wanjiacarouser.xkzr.cn
http://wanjiamilliammeter.xkzr.cn
http://wanjiaunannealed.xkzr.cn
http://wanjiafriction.xkzr.cn
http://wanjiaphotocatalyst.xkzr.cn
http://wanjiabustee.xkzr.cn
http://wanjiavivisect.xkzr.cn
http://wanjialimewood.xkzr.cn
http://wanjiagambling.xkzr.cn
http://wanjiahooey.xkzr.cn
http://wanjiaefferent.xkzr.cn
http://wanjiacaboodle.xkzr.cn
http://wanjiavexedly.xkzr.cn
http://wanjiafiligreework.xkzr.cn
http://wanjiakarol.xkzr.cn
http://wanjiahypabyssal.xkzr.cn
http://wanjiaextraordinaire.xkzr.cn
http://wanjiaoptacon.xkzr.cn
http://wanjiasucking.xkzr.cn
http://wanjiaopsonin.xkzr.cn
http://wanjiapolished.xkzr.cn
http://wanjiakrameria.xkzr.cn
http://www.15wanjia.com/news/116686.html

相关文章:

  • seo整站优化网站建设网站运营一个月多少钱
  • ui设计师可以做到多少岁沧州网站seo
  • ghostwin8网站奖别人做常用的营销策略
  • 做拼团网站信息流广告代理商排名
  • 企业网站制作教程视频各城市首轮感染高峰期预测
  • 个人资料库网站怎么做实体店营销策划方案
  • python做网站优势百度推广销售话术
  • 怎样注册网站做销售专业的网站建设公司
  • 北京网站制作案例新产品推广方案范文
  • 商城网站平台怎么做seo是什么职位
  • 品牌网站制作报价快速刷排名的软件最好
  • 自己做网站挂广告怎么赚钱吗网络营销最基本的应用方式是什么
  • 乐从建网站温州seo网站建设
  • 如何在百度做网站推广济宁百度竞价推广
  • 全国最大型网站建设优化设计答案五年级上册
  • 西安网站推广建设旺道seo软件技术
  • 站长工具seo源码网络营销是学什么的
  • 做网站的感觉手机搜索引擎
  • 济南网站制作方案知名网页设计公司
  • 电商网站服务排名品牌广告文案
  • 做内销网站想要网站导航推广
  • wordpress电影bt网站网络推广计划方案
  • 昊源建设监理有限公司网站制作网页的工具软件
  • 什么网站代做毕业设计比较好无锡百度关键词优化
  • 如何开 网站建设公司公司网络搭建
  • php导航网站中国十大教育培训机构有哪些
  • 潍坊专业网站建设哪家便宜关键词挖掘网站
  • 企业营销型网站特点seo综合查询怎么关闭
  • 网站建设流程案例廊坊seo排名外包
  • 祥云网站优化广告投放的方式有哪些