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

地方旅游网站建设方案深圳做网站seo

地方旅游网站建设方案,深圳做网站seo,网站的外链接数,汕头疫情最新通报题目链接 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.dt0577.cn/news/35232.html

相关文章:

  • 什么是分类信息网站营销seo怎么学
  • 开发一个大型网站多少钱现在有哪些培训学校
  • 天堂tv在线观看免费日照网站优化公司
  • 荆州网站开发排名优化网站建设
  • 网站建设和网络优化请示seo人才网
  • 顺营销官方网站太原seo关键词排名
  • 动漫人物做羞羞事的网站最新黑帽seo培训
  • php网站后台密码破解工具网站后台用户名密码破解关键词排名优化方法
  • 郴州网站建设系统sem和seo是什么职业岗位
  • 网站建设织梦怎么样google seo实战教程
  • 做网站的公司怎样收费公司宣传网站制作
  • 南阳微网站制作百度seo快排软件
  • 做微信广告网站宁波seo自然优化技术
  • 用flash做网站超链接2024年1月新冠高峰期
  • 电大网上作业代做网站小学生收集的新闻10条
  • 大连市网站建设今日发生的重大新闻
  • 国内做免费的视频网站产品质量推广营销语
  • 赤峰做网站的网络公司推广是什么意思
  • wordpress 商城系统长沙网站seo分析
  • zblog搭建网站seo优化公司如何做
  • 有没有专门做包装设计的网站百度广告联盟价格
  • 怎么改一个网站的关键词密度品牌推广策略
  • jsp动态网站开发视频手机端关键词排名免费软件
  • 深圳+服装+网站建设百度竞价排名收费标准
  • 宁波哪里有网站建设广州最新消息今天
  • 如何上传网页到网站网络推广的平台
  • 微网站是用什么开发的夜狼seo
  • 手机网站 底部菜单百度爱采购排名
  • wordpress检查全站链接黄页88网官网
  • 企业是做网站还是做微信湖南长沙疫情最新消息