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

高性能的网站建设指南百度推广代理商

高性能的网站建设指南,百度推广代理商,抖音代运营有效果吗,短视频营销定义题目链接 Leetcode.1139 最大的以 1 为边界的正方形 Rating : 1744 题目描述 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。 如果不存在,则返回 0。…

题目链接

Leetcode.1139 最大的以 1 为边界的正方形 Rating : 1744

题目描述

给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。

如果不存在,则返回 0。

示例 1:

输入:grid = [[1,1,1],[1,0,1],[1,1,1]]
输出:9

示例 2:

输入:grid = [[1,1,0,0]]
输出:1

提示:

  • 1<=grid.length<=1001 <= grid.length <= 1001<=grid.length<=100
  • 1<=grid[0].length<=1001 <= grid[0].length <= 1001<=grid[0].length<=100
  • grid[i][j]为 0 或 1

分析:

使用 dp 求解,我们定义 f(i,j,0)和f(i,j,1)f(i,j,0)和f(i,j,1)f(i,j,0)f(i,j,1)分别为以点 (i,j)结尾,向左 和 向上的连续 1的个数。

f(i,j,0)>0和f(i,j,1)>0f(i,j,0) > 0和f(i,j,1) > 0f(i,j,0)>0f(i,j,1)>0 的情况下,我们取 d=min(f(i,j,0),f(i,j,1))d = min(f(i,j,0),f(i,j,1))d=min(f(i,j,0),f(i,j,1))

遍历kkk (0<=k<=d)(0<=k<=d)(0<=k<=d),判断 f(i−k+1,j,0)>=k和f(i,j−k+1,1)>=kf(i-k+1,j,0) >= k 和 f(i,j-k+1,1) >= kf(ik+1,j,0)>=kf(i,jk+1,1)>=k,如果条件成立,说明可以构成一个最后一点是 (i,j),边长为 k的正方形。

时间复杂度:O(m∗n∗min(m∗n))O(m*n*min(m*n))O(mnmin(mn))

C++代码:

class Solution {
public:int largest1BorderedSquare(vector<vector<int>>& grid) {int m = grid.size(),n = grid[0].size();int f[m+1][n+1][2];memset(f,0,sizeof f);int ans = 0;for(int i = 1;i <= m;i++){for(int j = 1;j <= n;j++){//为1就记录if(grid[i-1][j-1]){f[i][j][0] = 1 + (j - 1 >= 1 ? f[i][j-1][0] : 0);f[i][j][1] = 1 + (i - 1 >= 1 ? f[i-1][j][1] : 0);}if(f[i][j][0] > 0 && f[i][j][1] > 0){int d = min(f[i][j][0],f[i][j][1]);//倒序判断能构成正方形的最大边长for(int k = d;k >= 0;k--){if(i-k+1 >= 1 && j-k+1 >= 1 && f[i-k+1][j][0] >= k && f[i][j-k+1][1] >= k){ans = max(ans,k*k);break;}}}}}return ans;}
};

Java代码:

class Solution {public int largest1BorderedSquare(int[][] grid) {int m = grid.length,n = grid[0].length;int[][][] f = new int[m+1][n+1][2];int ans = 0;for(int i = 1;i <= m;i++){for(int j = 1;j <= n;j++){if(grid[i-1][j-1]==1){f[i][j][0] = 1 + (j - 1 >= 1 ? f[i][j-1][0] : 0);f[i][j][1] = 1 + (i - 1 >= 1 ? f[i-1][j][1] : 0);}if(f[i][j][0] > 0 && f[i][j][1] > 0){int d = Math.min(f[i][j][0],f[i][j][1]);for(int k = d;k >= 0;k--){if(i-k+1 >= 1 && j-k+1 >= 1 && f[i-k+1][j][0] >= k && f[i][j-k+1][1] >= k){ans = Math.max(ans,k*k);break;}}}}}return ans;}
}
http://www.rdtb.cn/news/19203.html

相关文章:

  • 电脑怎么建网站详细步骤网络营销与管理专业是干什么的
  • 海南做网站长春网站快速优化排名
  • wordpress备份恢复青岛百度整站优化服务
  • 建设厅网站装修合同模板快速网站推广公司
  • php做网站csdn看啥网一个没有人工干预的网
  • 用模板网站做h5宣传页多少钱手机怎么搭建网站
  • 中小企业网站建设济南兴田德润电话做免费推广的平台
  • 网站建设网站免费网站推广的基本手段有哪些
  • 昆明网站推广公司网站seo技术
  • 网页设计与网站建设在线考试答案重庆放心seo整站优化
  • 做网站需要公司seo网页优化服务
  • 保定企业自助建站系统100%上热门文案
  • 企业网站 建设过程seo程序
  • 郑州网站建设公司哪家专业seo优化培训学校
  • 十大代理记账公司seo优化推广教程
  • 长沙点梦网站建设软文广告营销
  • 常州网站制作案例百度竞价ocpc投放策略
  • 做网站石家庄营销网络是啥意思
  • 哪个视频网站做视频赚钱的seo常用优化技巧
  • 郑州网站推广哪家效果好今日头条热搜
  • 社区网站推广方案怎么下载有风险的软件
  • 公司宣传册设计与制作图片济南网站优化公司
  • 怎么做网站劳务中介网络营销有哪几种方式
  • python做网站教程软件外包企业排名
  • 自己做企业网站服务器济南网络优化网站
  • 英文网站建网络营销的平台有哪些
  • 前端手机网站地方网站建设
  • 建站推广外包成都纯手工seo
  • 海关做预归类的网站360seo关键词优化
  • 政府网站建设步骤网络营销课程实训总结