返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++怎么实现矩阵赋零
  • 242
分享到

C++怎么实现矩阵赋零

2023-06-20 16:06:09 242人浏览 安东尼
摘要

这篇文章主要介绍“c++怎么实现矩阵赋零”,在日常操作中,相信很多人在C++怎么实现矩阵赋零问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现矩阵赋零”的疑惑有所帮助!接下来,请跟着小编一起来学习吧

这篇文章主要介绍“c++怎么实现矩阵赋零”,在日常操作中,相信很多人在C++怎么实现矩阵赋零问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现矩阵赋零”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

[LeetCode] 73.Set Matrix Zeroes 矩阵赋零

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

click to show follow up.

Follow up:

Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?

据说这题是CareerCup上的原题,我还没有刷CareerCup,所以不知道啦,不过这题也不算难,虽然我也是看了网上的解法照着写的,但是下次遇到绝对想的起来。这道题中说的空间复杂度为O(mn)的解法自不用多说,直接新建一个和matrix等大小的矩阵,然后一行一行的扫,只要有0,就将新建的矩阵的对应行全赋0,行扫完再扫列,然后把更新完的矩阵赋给matrix即可,这个算法的空间复杂度太高。将其优化到O(m+n)的方法是,用一个长度为m的一维数组记录各行中是否有0,用一个长度为n的一维数组记录各列中是否有0,最后直接更新matrix数组即可。这道题的要求是用O(1)的空间,那么我们就不能新建数组,我们考虑就用原数组的第一行第一列来记录各行各列是否有0.

- 先扫描第一行第一列,如果有0,则将各自的flag设置为true
- 然后扫描除去第一行第一列的整个数组,如果有0,则将对应的第一行和第一列的数字赋0
- 再次遍历除去第一行第一列的整个数组,如果对应的第一行和第一列的数字有一个为0,则将当前值赋0
- 最后根据第一行第一列的flag来更新第一行第一列

代码如下:

class Solution {public:    void setZeroes(vector<vector<int> > &matrix) {        if (matrix.empty() || matrix[0].empty()) return;        int m = matrix.size(), n = matrix[0].size();        bool rowZero = false, colZero = false;        for (int i = 0; i < m; ++i) {            if (matrix[i][0] == 0) colZero = true;        }        for (int i = 0; i < n; ++i) {            if (matrix[0][i] == 0) rowZero = true;        }         for (int i = 1; i < m; ++i) {            for (int j = 1; j < n; ++j) {                if (matrix[i][j] == 0) {                    matrix[0][j] = 0;                    matrix[i][0] = 0;                }            }        }        for (int i = 1; i < m; ++i) {            for (int j = 1; j < n; ++j) {                if (matrix[0][j] == 0 || matrix[i][0] == 0) {                    matrix[i][j] = 0;                }            }        }        if (rowZero) {            for (int i = 0; i < n; ++i) matrix[0][i] = 0;        }        if (colZero) {            for (int i = 0; i < m; ++i) matrix[i][0] = 0;        }    }};

到此,关于“C++怎么实现矩阵赋零”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C++怎么实现矩阵赋零

本文链接: https://lsjlt.com/news/298275.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++怎么实现矩阵赋零
    这篇文章主要介绍“C++怎么实现矩阵赋零”,在日常操作中,相信很多人在C++怎么实现矩阵赋零问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现矩阵赋零”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-20
  • C++实现LeetCode(73.矩阵赋零)
    [LeetCode] 73.Set Matrix Zeroes 矩阵赋零 Given a m x n matrix, if an elemen...
    99+
    2024-04-02
  • Java C++ leetcode面试零矩阵
    目录题目要求思路:模拟JavaC++Rust总结题目要求 思路:模拟 定义两个数组分别记录每行or每列中为0的元素;0所在的行列清零也就意味着元素所在行or列有0则置零【废话连篇...
    99+
    2022-11-13
    Java C++ 面试零矩阵 Java C++ 零矩阵
  • C++怎么实现螺旋矩阵
    本篇内容介绍了“C++怎么实现螺旋矩阵”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!螺旋矩阵Given a positive integer...
    99+
    2023-06-20
  • C++稀疏矩阵怎么实现
    这篇文章主要讲解了“C++稀疏矩阵怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++稀疏矩阵怎么实现”吧!稀疏矩阵矩阵与稀疏矩阵的定义Q:什么是矩阵A:数学上,一个矩阵由 m 行 ...
    99+
    2023-06-30
  • c#矩阵怎么写
    在 c# 中创建矩阵的方法有:使用锯齿数组:创建一个数组的数组,每行元素数量可能不同。使用 jaggedarray 类:提供更简单的锯齿数组创建方法。使用 system.numerics...
    99+
    2024-05-12
    c#
  • numpy对矩阵元素怎么赋值
    使用NumPy可以通过索引来赋值矩阵元素。具体的赋值操作取决于你想要赋值的矩阵的维度。对于一维数组,可以使用索引来赋值元素。例如:`...
    99+
    2023-08-19
    numpy
  • mat矩阵和npy矩阵怎么实现互相转换
    这篇“mat矩阵和npy矩阵怎么实现互相转换”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mat矩阵和npy矩阵怎么实现互相...
    99+
    2023-07-02
  • python共现矩阵怎么实现
    本篇内容主要讲解“python共现矩阵怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python共现矩阵怎么实现”吧!什么是共现矩阵比如我们有两句话:ls = [&#...
    99+
    2023-07-06
  • c++中eigen矩阵赋值的方法是什么
    在Eigen中,可以通过括号初始化、逐个元素赋值、块赋值等方式对矩阵进行赋值。 使用括号初始化: Eigen::MatrixXf...
    99+
    2024-03-12
    c++ eigen
  • matlab建立空矩阵后怎么赋值
    在Matlab中,可以使用赋值语句将值分配给已经创建的空矩阵。下面是一些示例代码:1. 赋值给单个元素:```matlabA = [...
    99+
    2023-09-21
    matlab
  • C++利用伴随阵法实现矩阵求逆
    先来一段百度百科上的搜索结果: 伴随阵法 定理:n阶矩阵为可逆的充分必要条件是A非奇异,且: 其中,是|A|中元素的代数余子式;矩阵 称为矩阵A的伴随矩阵,记作A*,于是有 用...
    99+
    2023-02-10
    C++伴随阵法实现矩阵求逆 C++实现矩阵求逆 C++矩阵求逆
  • python旋转矩阵怎么实现
    要实现矩阵的旋转,可以使用numpy库中的rot90函数。下面是一个简单的示例代码: import numpy as np # 创...
    99+
    2023-10-21
    python
  • python二维矩阵怎么实现
    Python中可以使用列表(list)来表示二维矩阵。可以通过嵌套列表的方式来表示二维矩阵的行和列。 以下是几种创建二维矩阵的方法:...
    99+
    2023-10-22
    python
  • C++矩阵运算的实现简单
    利用C++实现矩阵的构造,通过运算符的重载实现矩阵的乘法、加法等。并且实现矩阵形状的打印,矩阵的打印。 #include<iostream> #include<...
    99+
    2024-04-02
  • C++实现转置矩阵的循环
    目录前言一、思路分析二、代码实现1.转置矩阵函数2.调用函数实现转置矩阵总结前言 矩阵的转置主要考查我们对循环的使用,通过简单的循环结构,我们可以很方便的完成矩阵的转置。 一、思路...
    99+
    2024-04-02
  • python怎么给矩阵指定元素赋值
    在Python中,可以使用索引来给矩阵的指定元素赋值。下面是一种常用的方法:```pythonmatrix = [[1, 2, 3]...
    99+
    2023-08-19
    python
  • C/C++实现蛇形矩阵的示例代码怎么写
    这篇文章将为大家详细讲解有关C/C++实现蛇形矩阵的示例代码怎么写,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。菜鸡蒟蒻想在博客中记录一些算法学习的心得体会,会持续更新C/C++方面的题解,...
    99+
    2023-06-26
  • C++实现LeetCode(59.螺旋矩阵之二)
    [LeetCode] 59. Spiral Matrix II 螺旋矩阵之二 Given a positive integer n, generate a square m...
    99+
    2024-04-02
  • C语言如何实现矩阵连乘
    本篇内容主要讲解“C语言如何实现矩阵连乘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现矩阵连乘”吧!动态规划法题目描述:给定n个矩阵{A1,A2....An},其中Ai与Ai+1是...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作