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

江苏建站管理系统信息网络推广理实一体化软件

江苏建站管理系统信息,网络推广理实一体化软件,asp做网站很少,香港做最好看的电影网站有哪些这道题我没有想到什么好的办法,直接暴力AC了,直接遍历两次矩阵,第一次遍历用两个向量分别记录出现0的行数和列数,第二次遍历就判断当前的元素的行数或者列数是否出现在之前的两个向量中,若出现了就直接置零&#xff0c…


这道题我没有想到什么好的办法,直接暴力AC了,直接遍历两次矩阵,第一次遍历用两个向量分别记录出现0的行数和列数,第二次遍历就判断当前的元素的行数或者列数是否出现在之前的两个向量中,若出现了就直接置零,否则就跳过。后面看了下空间复杂度为O(1)的解法,感觉这个思路不错,记录一下。
我们可以将第0行和第0列作为记录的标志位,例如matrix[5][6] == 0,我们就将matrix[0][6]matrix[5][0]置为0,经过一次遍历后,除了第0行和第0列的情况没有统计出来,其余的行和列都已经遍历结束并且打上标签,由于打标签会向第0行和第0列添加0,打完标签后无法判断其本身原本就包含0,因此在遍历矩阵打标签之前,我们需要遍历矩阵的第0行和第0列,如果他们本身就有0,我们就分别用两个变量记录下来,至此,我们先分别遍历了矩阵的第0行和第0列,再遍历了矩阵的其余行和列,这就遍历了一次矩阵,我们再遍历一次矩阵,从下标为1的行和列开始,对于matrix[i][j],如果matrix[0][j] == 0matrix[i][0] == 0,我们就直接将matrix[i][j]置零。遍历结束后,我们还需要对第0行和第0列进行处理,如果他们原本就包含0,则将整行或整列直接置零。这里依然是遍历两次数组,但是由于只进行了比较操作,而没有进行查找操作,程序耗时要比我之前暴力AC短得多。
下面分别是暴力AC代码(空间复杂度O(m + n))和空间复杂度O(1)的代码。

//暴力代码
class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {vector<int> row;vector<int> column;for(int i = 0; i < matrix.size(); ++i){for(int j = 0; j < matrix[i].size(); ++j){if(matrix[i][j] == 0){row.emplace_back(i);column.emplace_back(j);}}}for(int i = 0; i < matrix.size(); ++i){for(int j = 0; j < matrix[i].size(); ++j){if(find(row.begin(), row.end(), i) == row.end() && find(column.begin(), column.end(), j) == column.end())continue;matrix[i][j] = 0;}}}
};
//空间复杂度O(1)代码
class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {bool row_flag0 = false;   //判断第0行有没有0bool column_flag0 = false;  //判断第0列有没有0//遍历第0行for(int i = 0; i < matrix[0].size(); ++i){if(matrix[0][i] == 0){row_flag0 = true;break;}}//遍历第0列for(int i = 0; i < matrix.size(); ++i){if(matrix[i][0] == 0){column_flag0 = true;break;}}//遍历整个矩阵,在第0行和第0列标记0元素的分布情况for(int i = 1; i < matrix.size(); ++i){for(int j = 1; j < matrix[i].size(); ++j){if(matrix[i][j] == 0){matrix[i][0] = 0;  //在第0列的对应位置置零matrix[0][j] = 0;  //在第0行的对应位置置零}}}//开始置零for(int i = 1; i < matrix.size(); ++i){for(int j = 1; j < matrix[i].size(); ++j){if(matrix[i][0] == 0 || matrix[0][j] == 0)matrix[i][j] = 0;  }}//判断在打标记之前第0行本身有没有0if(row_flag0){for(int i = 0; i < matrix[0].size(); ++i)matrix[0][i] = 0;}//判断在打标记之前第0列本身有没有0if(column_flag0){for(int i = 0; i < matrix.size(); ++i)matrix[i][0] = 0;}}
};
http://www.dtcms.com/wzjs/23686.html

相关文章:

  • 网站做链接算侵权吗网络软文广告
  • 黑龙江省农业网站建设情况广州seo推广运营专员
  • 网站** 教程营销手段和营销方式
  • 20个外国平面设计网站天津推广的平台
  • 桂林网站建设找骏程关键词优化步骤简短
  • 用网站做自我介绍自己网店推广的作用
  • 基于阿里云的网站开发永久免费域名注册
  • 如何做国外的社交网站小程序seo
  • 网站内容建设评估体育热点新闻
  • 各大网站搜索引擎入口怎么样把自己的产品网上推广
  • 设计工作室注册长沙seo搜索
  • 怎么做找券网站怎么联系百度人工服务
  • 手机做印章网站软文写作方法
  • 东莞房价2022最新楼盘消息淮安网站seo
  • 手机版网站开发实例百度如何购买关键词
  • 做服装外贸的网站建设百度一下你就知道了官网
  • 网站后台管理布局龙岗网站建设
  • 建设网站的意义 作用是什么网络广告公司
  • 北京做网站建设的公司电商网站建设制作
  • 做网站和做免费推广网站的区别百度平台我的订单查询在哪里
  • 网站是先备案还是先做网站成人教育培训机构
  • 免费做元宵节卡片的网站seo建站是什么意思
  • 去哪个网站找题目给孩子做sem推广竞价托管公司
  • 哪家网站制作 优帮云百度上做推广怎么收费
  • 做游戏网站教程武汉搜索推广
  • 柳州专业网站建设加盟免费百度seo引流
  • 网站建设公司选择标准互联网整合营销推广
  • 在市场部做网站多少工资网站建设合同模板
  • wordpress用户功能扩展天津百度推广排名优化
  • 做网站怎么挣钱seo优化推广