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

江苏10大网站建设公司网站优化推广平台

江苏10大网站建设公司,网站优化推广平台,什么是软件开发过程,建行官网的网址是多少这道题我没有想到什么好的办法,直接暴力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/193645.html

相关文章:

  • 利用c 做网站seo免费优化网站
  • 创新的福州网站建设深圳市seo网络推广哪家好
  • 网站建设与维护书网站首页排名
  • 茂名公司网站开发线上营销策划案例
  • 简述网站设计规划的步骤厦门seo百度快照优化
  • 深圳市手机网站建设企业百度平台商家客服
  • 做网站付款方式培训心得体会2000字
  • 淘宝客自己做网站北京搜索优化排名公司
  • 做网站导流新闻头条新闻
  • 开网站公司怎么样优化关键词排名
  • 电子商务网站建设总结报告百度指数排行榜
  • 微信手机网站支付怎么做seo是怎么优化推广的
  • 云南安宁做网站的公司西安网络推广
  • seo品牌优化百度资源网站推广关键词排名企业所得税优惠政策
  • 从来没做过网站如何做谷歌浏览器官网下载
  • 珠海网站推广公司深圳全网推广
  • 建设网站模板下载关键词优化方法
  • 网站开发 图片服务器爱站工具包的模块
  • 网站怎么做本地测试工具图片扫一扫在线识别照片
  • 做网站的工作要求百度竞价推广价格
  • 怎么查网站的icp备案品牌营销案例分析
  • 剑三做月饼活动网站自媒体发布软件app
  • 如何传图片做网站b2b平台都有哪些网站
  • wordpress建站网站报错亚马逊关键词排名查询工具
  • 怎么加入网站做微商城地推放单平台
  • 吉林网站建设电话百度搜索广告怎么投放
  • 网站后台管理怎么进seo专业培训课程
  • wordpress注册qq邮箱配置手机优化大师为什么扣钱
  • 大连外贸网站建设百度权重1
  • 中国企业网官方网站下载网络营销一般月薪多少