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

php网站后台模板下载不了我想做网站怎么做

php网站后台模板下载不了,我想做网站怎么做,微信小程序怎么做会员卡,徐州seo企业统计全1子矩阵个数 思路1:首先考虑深度优先模拟,从【0,0】出发向下、右扩展,符合条件res,最后输出res,比较直观,但重复进行了大量节点遍历操作,时间复杂度较高,数据量大时…

统计全1子矩阵个数

在这里插入图片描述
思路1:首先考虑深度优先模拟,从【0,0】出发向下、右扩展,符合条件res++,最后输出res,比较直观,但重复进行了大量节点遍历操作,时间复杂度较高,数据量大时会超时

class Solution {unordered_set<int>set;int res=0;void get(vector<vector<int>>& mat,int start_r,int start_c,int row,int col){if(row>=mat.size()||col>=mat[0].size()||set.count(start_r+(start_c+((row+col*151)*151))*151)) return;for(int i=start_r;i<=row;i++){if(!mat[i][col]) return;}for(int i=start_c;i<=col;i++){if(!mat[row][i]) return;}res++;set.insert(start_r+(start_c+((row+col*151)*151))*151);get(mat,start_r,start_c,row+1,col);get(mat,start_r,start_c,row,col+1);}
public:int numSubmat(vector<vector<int>>& mat) {for(int i=0;i<mat.size();i++){for(int j=0;j<mat[0].size();j++){get(mat,i,j,i,j);}}return res;}
};

思路2:单考虑行或列时每增加1个1,结果增加 行或列1个数+1,那么多行多列时每增加一行或一列增加(1+2+…+n)*(m+1),加列时:n为行数,m为原来列数,实际上情景就是第一个图的拓展,只不过矩形中的1实际上是长度相等的全1矩形
在这里插入图片描述

因而仅需要使用一个二维数组tmp存储target[i][j]及前有几个连续的1,然后从上到下加上min(tmp[i][j],tmp_pre_min)即可
在这里插入图片描述

class Solution {
public:int numSubmat(vector<vector<int>>& mat) {int n = mat.size();int m = mat[0].size();vector<vector<int> > row(n, vector<int>(m, 0));for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (j == 0) {row[i][j] = mat[i][j];} else if (mat[i][j]) {row[i][j] = row[i][j - 1] + 1;}else {row[i][j] = 0;}}}int ans = 0;for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {int col = row[i][j];for (int k = i; k >= 0 && col; --k) {col = min(col, row[k][j]);ans += col;}}}return ans;}
};

单调栈优化后代码:

class Solution {
public:int numSubmat(vector<vector<int>>& mat) {int n = mat.size();int m = mat[0].size();vector<vector<int> > row(n, vector<int>(m, 0));for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {if (j == 0) {row[i][j] = mat[i][j];} else if (mat[i][j]) {row[i][j] = row[i][j - 1] + 1;}else {row[i][j] = 0;}}}int ans = 0;for (int j = 0; j < m; ++j) { int i = 0; stack<pair<int, int> > Q; int sum = 0; while (i <= n - 1) { int height = 1; while (!Q.empty() && Q.top().first > row[i][j]) {// 弹出的时候要减去多于的答案sum -= Q.top().second * (Q.top().first - row[i][j]); height += Q.top().second; Q.pop(); } sum += row[i][j]; ans += sum; Q.push({ row[i][j], height }); i++; } } return ans;}
};
http://www.yayakq.cn/news/849140/

相关文章:

  • 网站标签设置百度网页推广怎么做
  • 东莞高端做网站公司北京vi设计方案
  • 淘宝网站是怎么做的吗天津网站备案去哪
  • 晋江做任务的网站如何选择做网站公司
  • 牡丹江做网站建设网站初期 权重怎么做
  • 明年做啥网站致富做模拟人生类的游戏下载网站
  • 车机油哪个网站做的好wordpress menu代码
  • 外链seo软件下载单页网站seo如何优化
  • 群站wordpress哪个网站能在线做司考题目
  • 网站网页?问?怎样在腾讯地图设置自己公司位置
  • 网站建设服务描述沈阳制作网站的公司有哪些
  • 文章网建站网络推广营销方法
  • 手机网站APP网络推广商城网站昌吉网站建设电话
  • 网站建设的技术网站页面的宽度
  • 景区网站建设案例长安网站建设软件
  • 020模版网站制作简单房地产网站在哪
  • 海珠建网站的公司卖汽车的网站怎么做的吗
  • 无障碍浏览网站怎么做竞价推广的方案
  • 张掖市住房和城乡建设局网站app立即打开
  • 查网站是否正规广告投放公司
  • 设计logo网站赚钱中国建设工程造价管理系统
  • 福建省住建厅建设网站互联网保险的特点有哪些
  • 搭建网站什么意思网站开发所需费用支出有哪些
  • 做网站用的图标电子商务网站建设李洪心课后答案
  • 网站建设选青岛的公司好不好前端学多久可以找到工作
  • 科汛 kesioncms v8.05 企业网站建设入门视频教程培训加盟
  • 阿里云服务器的网站备案流程图广告设计app免费
  • 手机网站做分享到朋友圈二级网站怎么做
  • 网站建设主要内容包括上海工商网上企业查名
  • 网站建设与优化推广方案模板wordpress加百度商桥变慢