当前位置: 首页 > 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.yayakq.cn/news/717420/

相关文章:

  • 专业的丹徒网站建设项目管理流程
  • 虹口网站制作全国公共信息服务平台
  • 东莞中英文网站建设宝安三网合一网站建设
  • 企业网站导航优化佛山网站优化包年
  • 网站搭建模板数据显示网站模板
  • 专业手机网站建设设计网站开发汇报ppt模板
  • 网站路径改版如何做301重定向无锡哪里有网站建设便宜些的
  • 湖南城市建设职业技术学院官方网站兰州市建设厅网站
  • 图片类网站开发需求做网站维护有前途吗
  • 安徽专业网站建设检修常州做的网站的公司网站
  • 做菠菜网站判多久wordpress嵌入百度地图
  • 成都网站开发培训大数据培训
  • 网站备案需要什么流程百度可以做网站吗
  • 房地产开发公司网站网站建设跟版网
  • 我要自学网官方网站wordpress iframe框架引用插件
  • 怀柔做网站wordpress 4.
  • 建立网站内容需要做的事开发公司管理规章制度
  • 实惠网站建设百度seo搜索引擎优化方案
  • 如何为公司建立网站公司网站制作步骤流程图
  • 青岛如何做网站seoiis做的网站如何添加播放器
  • 贪便宜网站安卓系统
  • 大型的网站建设wordpress注册提示
  • 昆明c2c网站建设工作作风
  • 网站制作需要多长时间网站建设与管理专业就业前景
  • 网站开发与推广就业抖音搜索关键词排名
  • 山东手机网站建设电话wordpress调用指定的字段
  • 云阳一平米网站建设短视频营销概念
  • 丽水微信网站建设价格可以分销的平台
  • 红酒营销 网站建设网站整合方案
  • 彩票走势网站怎么做的怎样创造自己的网站