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

网站建设公司济南网站如何做关键词优化

网站建设公司济南,网站如何做关键词优化,建立充电站需要多少钱,观看床做视频网站目录 题目描述:73. 矩阵置零(中等)题目接口解题思路1代码解题思路2代码 PS: 题目描述:73. 矩阵置零(中等) 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都…

目录

  • 题目描述:73. 矩阵置零(中等)
    • 题目接口
    • 解题思路1
    • 代码
    • 解题思路2
    • 代码
  • PS:

题目描述:73. 矩阵置零(中等)

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

LeetCode做题链接:LeetCode-矩阵置零

示例 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 <= matrix[i][j] <= 231 - 1

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

题目接口

class Solution {public void setZeroes(int[][] matrix) {}
}

解题思路1

方法一:使用标记数组
我们可以用两个布尔类型的标记数组(一个记录整行,一个记录整列)分别记录每一行和每一列是否有零出现,有的话将整行和整列置为true,然后再遍历一次数组将所有true的值对应的下标的数组换成0

代码

class Solution {public void setZeroes(int[][] matrix) {int colLen = matrix.length;int rowLen = matrix[0].length;boolean[] col = new boolean[colLen];boolean[] row = new boolean[rowLen];// 标记for (int i = 0; i < colLen; i++) {for (int j = 0; j < rowLen; j++) {if (matrix[i][j] == 0) {col[i] = true;row[j] = true;}}}// 遍历数组,将col,row为true的地方设为0for (int i = 0; i < colLen; i++) {for (int j = 0; j < rowLen; j++) {if (col[i] || row[j]) {matrix[i][j] = 0;}}}}
}

成功!
在这里插入图片描述
复杂度分析
时间复杂度:O(mn),其中 m 是矩阵的行数,n 是矩阵的列数。我们至多只需要遍历该矩阵两次。
空间复杂度:O(m+n),其中 m 是矩阵的行数,n 是矩阵的列数。我们需要分别记录每一行或每一列是否有零出现。

解题思路2

代码

class Solution {public void setZeroes(int[][] matrix) {int colLen = matrix.length;int rowLen = matrix[0].length;boolean flagRow = false;    // 行boolean flagCol = false;    // 列if (matrix[0][0] == 0) {// 如果第一个元素就是0,那 flagRow、flagCol直接置为true,不去遍历flagRow = flagCol = true;} else {for (int i = 0; i < rowLen; i++) {if (matrix[0][i] == 0) {flagRow = true; // 说明第一行有0,就直接为标true,然后退出break;}}for (int i = 0; i < colLen; i++) {if (matrix[i][0] == 0) {flagCol = true; // 说明第一列有0,就直接为标true,然后退出break;}}}// 开始标记,跟方法一类似,注意从1开始for (int i = 1; i < colLen; i++) {for (int j = 1; j < rowLen; j++) {if (matrix[i][j] == 0) {matrix[i][0] = 0;matrix[0][j] = 0;}}}// 遍历数组,将matrix[i][0] = 0 matrix[0][i] = 0 的行和列设为0,注意从1开始for (int i = 1; i < colLen; i++) {for (int j = 1; j < rowLen; j++) {if (matrix[i][0] == 0 || matrix[0][j] == 0) {matrix[i][j] = 0;}}}// 更新第一行与第一列if (flagRow) {for (int i = 0; i < rowLen; i++) {matrix[0][i] = 0;}}if (flagCol) {for (int i = 0; i < colLen; i++) {matrix[i][0] = 0;}}}
}

成功!
在这里插入图片描述

PS:

感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个喔~

http://www.hkea.cn/news/557599/

相关文章:

  • 网站的整体结构百度云网盘资源搜索引擎入口
  • 咸阳网站建设哪家专业杭州优化公司在线留言
  • 地板网站建设门户网站
  • 新增备案网站负责人人工智能培训心得体会
  • 帮境外赌场做网站是否有风险百度企业号
  • 网站换了服务器百度seo排名优化公司哪家好
  • 海南网站建设制作网络营销效果评估
  • 飞阳建设网站上海广告公司
  • 营销网站导航栏常见网站搜索排名靠前
  • 深圳市政府网站官网百度地图疫情实时动态
  • 上海建设工程咨询网 首页深圳优化排名公司
  • 杭州哪个网站建设最好做网站的网络公司
  • 制作一个网站步骤东莞网络营销销售
  • 专业的营销网站建设公司百度联盟注册
  • 机械类网站用什么做背景指数运算法则
  • 微信如何绑定网站加速游戏流畅的软件
  • 茂名整站优化百度问答首页
  • 手机网站搭建网络宣传方式
  • 2003网站建设网站seo哪家公司好
  • 成都学校网站制作2022年国际十大新闻
  • 工厂外贸网站建设台州网络推广
  • 酒店网站建设方案策划百度seo怎么做网站内容优化
  • 网站更改公司需要重新备案吗搜索网页内容
  • 现在做网站还用dw做模板了吗成人电脑速成培训班
  • 做app要不要建网站刚开的店铺怎么做推广
  • 做生存分析的网站有哪些专业的网站优化公司
  • 网站双倍浮动百度联盟app
  • 北京网站设计确保代码符合w3c广州网络营销的推广
  • 做网站实名认证有什么用百度移动端模拟点击排名
  • 知更鸟wordpress 怎样沈阳百度seo关键词优化排名