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

网站建设需要多久外包公司到底值不值得去

网站建设需要多久,外包公司到底值不值得去,上海专业做网站公司地址,域名网站备案从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 73. 矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:mat…

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结

73. 矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

示例 1:
在这里插入图片描述

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:
在这里插入图片描述

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

提示:
m == matrix.length
n == matrix[0].length
1 <= m, n <= 200
−231-2^31231 <= matrix[i][j] <= 231−12^31 - 12311

进阶:
一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。
一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。
你能想出一个仅使用常量空间的解决方案吗?

方法一
思路:用两个set分别记录需要置0的行和需要置0的列。第一次遍历矩阵时,若发现一个元素为0,则将其行和列值分别加入到两个set中。第二次遍历矩阵时,将行set中的行全部置0,将列set中的列全部置0。

public void setZeroes(int[][] matrix) {if(matrix == null || matrix.length == 0)return;int m = matrix.length, n = matrix[0].length;Set<Integer> row = new HashSet<Integer>();Set<Integer> col = new HashSet<Integer>();for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(matrix[i][j] == 0){row.add(i);col.add(j);}}}for(int i : row){for(int j = 0; j < n; j++)matrix[i][j] = 0;}for(int j : col){for(int i = 0; i < m; i++)matrix[i][j] = 0;}
}

时间复杂度:O(m×n)
空间复杂度:O(m+n) 最坏情况是矩阵中全部元素为0的情况,这时两个set的大小分别为m和n。

方法二
思路:不用额外空间,让首行和首列记录某列和某行是否有0

算法步骤:
首先用两个布尔类型变量firstRow和firstCol分别记录矩阵的首行和首列中是否有0
遍历除首行和首列外的所有元素,若元素matrix[i][j]为0,则将它对应的首行和首列中的元素matrix[i][0]和matrix[0][j]置为0,意为此行和列后续需要被置0(由于修改后首行和首列是否有0的信息会被破坏掉,因此需要有之前的步骤一)
遍历首行和首列,若发现首行中有元素为0,则将此元素所处的列全部置0,若发现首列中有元素为0,则将此元素所处的行全部置0。
根据步骤一的布尔类型变量firstRow和firstCol来判断首行和首列是否需要被置0。

public void setZeroes(int[][] matrix) {if(matrix == null || matrix.length == 0)return;int m = matrix.length, n = matrix[0].length;boolean firstRow = false, firstCol = false;//步骤一for(int i = 0; i < m; i++){if(matrix[i][0] == 0)firstCol = true;}for(int j = 0; j < n; j++){if(matrix[0][j] == 0)firstRow = true;}//步骤二for(int i = 1; i < m; i++){for(int j = 1; j < n; j++){if(matrix[i][j] == 0){matrix[i][0] = 0;matrix[0][j] = 0;}}}//步骤三for(int i = 1; i < m; i++){if(matrix[i][0] == 0){for(int j = 0; j < n; j++)matrix[i][j] = 0;}}for(int j = 1; j < n; j++){if(matrix[0][j] == 0){for(int i = 0; i < m; i++)matrix[i][j] = 0;}}//步骤四if(firstRow){for(int j = 0; j < n; j++)matrix[0][j] = 0;}if(firstCol){for(int i = 0; i < m; i++)matrix[i][0] = 0;}
}

时间复杂度:O(m×n)
空间复杂度:O(1)

http://www.tj-hxxt.cn/news/116284.html

相关文章:

  • 莲花网站火星时代教育培训机构官网
  • 网站的商桥怎么做系统优化的方法
  • 什么网站可以发布有偿做项目百度手机助手免费下载
  • 青羊区建设和交通网站百度竞价优缺点
  • 互动网站建设seo域名如何优化
  • 做网站会什么问题优化大师免费下载
  • 成都 专业 网站建设济南百度推广优化
  • 自己怎么做点击量好的网站全网搜索指数查询
  • 网站建设的内容百度网盘搜索引擎入口哪里
  • 刷网站跳出率百度推广怎么优化排名
  • wordpress 获取菜单seo分析师招聘
  • 学网站建设的学校发帖效果好的网站
  • 怎么做网站 知乎杭州网站推广优化
  • 创建网站基本流程seo关键词优化策略
  • 做网站必须要dreamever东莞网站营销
  • 社交型网站开发怎么做营销
  • 低价建设手机网站公司网站设计定制
  • 网站一键提交seo专业术语
  • 做网站交钱后以后还要教吗地推团队去哪里找
  • 规则网站建设域名注册信息查询
  • 哪里有做网站公司的百度热搜的含义
  • 蓝色高科技网站模板站长之家seo综合查询
  • 网站制作价格权威乐云践新成免费的crm
  • 上海做网站的青岛网络优化费用
  • 商务网站规划与建设课程设计百度搜索引擎下载免费
  • 流行网站设计苏州关键词优化seo
  • 网站制作金华公司电话已矣seo排名点击软件
  • 做房产抵押网站需要什么如何制作一个网站
  • 天津智能网站建设多少钱长沙关键词优化公司电话
  • 通州网站建设公司搜狗收录查询