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

如何做网站豆瓣新余市网站建设

如何做网站豆瓣,新余市网站建设,网站网络推广企业,做网站优化竞价区别链接矩阵置零题序号73题型二维数组解题方法标记数组法难度中等熟练度✅✅✅✅ 题目 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1]…
链接矩阵置零
题序号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 <= matrix[i][j] <= 231 - 1

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

题解

  1. 核心要点
    • 标记0的位置:
      使用两个向量 row 和 col 来分别标记包含0的行和列。row 的长度为矩阵的行数 m,col 的长度为矩阵的列数 n。初始时,所有元素都设置为 false。
    • 遍历矩阵:
      第一个循环遍历矩阵的每个元素 matrix[i][j]。
      如果发现元素值为0,则将对应的 row[i] 和 col[j] 标记为 true。
    • 置零操作:
      第二个循环再次遍历矩阵,根据 row 和 col 的标记,将对应的行和列置零。
  2. 时间复杂度:O(mn)
  3. 空间复杂度:O(m+n)
  4. c++ 实现算法:
class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[0].size();vector<int> row(m), col(n);for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (!matrix[i][j]) {row[i] = col[j] = true;}}}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (row[i] || col[j]) {matrix[i][j] = 0;}}}}
};
  1. 演示:以示例1为例

假设我们有以下矩阵:

[
[1, 1, 1],
[1, 0, 1],
[1, 1, 1]
]
我们需要将所有包含0的行和列置零。

第一步:标记0的位置
我们使用两个向量 row 和 col 来标记包含0的行和列。

遍历矩阵的每个元素:
当我们遇到 matrix[1][1] = 0 时,我们将 row[1] 和 col[1] 标记为 true。
标记后的 row 和 col 向量如下:

row: [false, true, false]
col: [false, true, false]

第二步:置零操作
根据 row 和 col 的标记,我们将对应的行和列置零。

遍历矩阵的每个元素:
对于 matrix[1][0],由于 row[1] 为 true,我们将其置零。
对于 matrix[1][1],它已经是零,保持不变。
对于 matrix[1][2],由于 row[1] 为 true,我们将其置零。
对于 matrix[0][1] 和 matrix[2][1],由于 col[1] 为 true,我们将其置零。

最终得到的矩阵如下:

[
[1, 0, 1],
[0, 0, 0],
[1, 0, 1]
]

  1. c++ 完整demo:
#include <vector>
#include <iostream>using namespace std;class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int m = matrix.size();int n = matrix[0].size();vector<int> row(m), col(n);for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (!matrix[i][j]) {row[i] = col[j] = true;}}}for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (row[i] || col[j]) {matrix[i][j] = 0;}}}}
};// 用于打印矩阵的函数
void printMatrix(const vector<vector<int>>& matrix) {for (const auto& row : matrix) {for (int num : row) {cout << num << " ";}cout << endl;}
}int main() {// 创建一个示例矩阵vector<vector<int>> matrix = {{1, 1, 1},{1, 0, 1},{1, 1, 1}};cout << "Original matrix:" << endl;printMatrix(matrix);Solution solution;solution.setZeroes(matrix);cout << "Matrix after setting zeros:" << endl;printMatrix(matrix);return 0;
}
http://www.yayakq.cn/news/303108/

相关文章:

  • 云南省住房和建设厅网站网站引用优酷
  • 网站建设中请稍后再访问golang wordpress
  • 公司网站做的好的山东房地产新闻
  • 珠海网站建设专业公司一起做网站女装夏季裙
  • 信誉好的南昌网站建设淮安市盱眙县建设局网站
  • 网站上资源截图怎么做个人网页html模板
  • 做的网站打开慢装潢公司网站建设
  • 小红书推广网站网站外链优化
  • 天津网站建设设计开发公司html怎么做商品页面
  • 邯郸市环保局网站建设项目环境自己怎么搭建网站
  • 聊城专业网站设计公司昆明市哪里有网站建设
  • 优化营商环境心得体会个人手机网络优化
  • 电子商务做网站设计网站要怎么做关键词
  • 亳州蒙城网站建设免费虚拟主机网站源码
  • 湖北建筑网陕西网站关键词自然排名优化
  • 建网站模板协会网站建设模板
  • 苏州吴江区住房和城乡建设局网站做pc端网站策划
  • 好的活动策划网站产品营销策划
  • 网站设计文案 范例商城小程序价格
  • 南充免费推广网站快速搭建网站框架的工具
  • 织梦大气绿色大气农业能源化工机械产品企业网站源码模版江西雄基建设网站
  • 北海建设厅网站如何做自己的网站商城站
  • 网站建设合同书注意事项女装电子商务网站建设
  • 官方网站投诉平台企业建站 wordpress
  • 织梦手机端网站怎么做兴安盟新百度县seo快速排名
  • 网站名字大全有哪些搭建wordpress环境搭建
  • 专业建站公司加盟网站建设维护需要懂哪些知识
  • 西安浐灞生态区规划建设局网站两学一做专栏网站
  • 软件开发模型的理解烟台优化网站建设
  • 怎样在建设部网站下载规范德州北京网站建设