首页 > 其他分享 >73. 矩阵置零

73. 矩阵置零

时间:2023-11-30 15:44:42浏览次数:28  
标签:matrix int sum 矩阵 73 size

73. 矩阵置零

2021年3月21日每日一题

O(1)额外空间写法

简单理解一下

​ 首先我们对于矩阵内所有\(\sum_{i=0}^{m}{\sum_{j=1}^{n}}0\),记录到第0行和第0列上

​ 那么,我们只需要对于\(\sum_{i=1}^{m}{\sum_{j=1}^{n}}\),只需要根据第0行和第0列来置0即可

​ 无论第0行和第0列原先是否是0,其对应的列/行,必定变为0

​ 那么,我们考虑第0行对应的行

​ 我们可以发现,它有\(m[0][0]\)来控制,只要是0,那么整行都是0。

​ 我们再考虑第0列对应的列

​ 我们可以发现,遍历每一行会对每一行的第0列进行更改,我们需要在遍历前,记录原先第\(i\)行第0列的是否为0,只要有一个\([i][0]\)是0,那么显然第0列全为0

代码

class Solution {
  public:
    void setZeroes(vector<vector<int>> &matrix) {
        int n, m;
        m = matrix.size();
        n = matrix[0].size();
        bool rs=0;
        for (int i = 0; i < m; i++) {
            //每一行头部原本是否有0
            //包含原本的[0,0]
            if(matrix[i][0]==0)
             rs=1;
            //判断每列里是否有0
            //第0行只对[0,0]有影响
            for (int j = 1; j < n; j++)
                if (matrix[i][j] == 0)
                    matrix[i][0] = matrix[0][j] = 0;
        }
        for(int i=1;i<m;i++)
            for(int j=1;j<n;j++)
                if(matrix[i][0]==0||matrix[0][j]==0)
                    matrix[i][j]=0;
        if(matrix[0][0]==0)
            for(int i=0;i<n;i++)
                matrix[0][i]=0;
        if(rs)
            for(int i=0;i<m;i++)
                matrix[i][0]=0;
    }
};

标签:matrix,int,sum,矩阵,73,size
From: https://www.cnblogs.com/CrossAutomaton/p/17867515.html

相关文章

  • vulhub中spring的CVE-2018-1273漏洞复现
    ​ 1.影响版本SpringDataCommons1.13-1.13.10(IngallsSR10)SpringDataREST2.6-2.6.10(IngallsSR10)SpringDataCommons2.0to2.0.5(KaySR5)SpringDataREST3.0-3.0.5(KaySR5)2.漏洞原理SpringData是一个用于简化数据库访问,并支持云服务的开源框......
  • Linux 内核参数调整解析:深度优化数据库性能 转载:https://www.toutiao.com/article/73
    系统内核参数配置文件:/etc/sysctl.conf一、参数说明1、关闭IPv6支持net.ipv6.conf.all.disable_ipv6=1net.ipv6.conf.default.disable_ipv6=1作用:关闭对IPv6的支持,减轻系统负担,提高安全性。解析:net.ipv6.conf.all.disable_ipv6:禁用系统中所有网络接口的IPv6。net......
  • 矩阵乘法运算
    代码是对整数的如果要对小数的话改个字符就OK啦用途没有就是做线性代数怕计算罢了#include<stdio.h>voidcreateMatrix(inta[10][10],intm,intn){for(inti=0;i<m;++i){for(intj=0;j<n;j++){scanf_s("%d",&a[i][j]);......
  • 一些矩阵的非刚性 (1)
    \(\newcommand{\rank}{\operatorname{rank}}\newcommand{\codim}{\operatorname{codim}}\)矩阵刚性(matrixrigidity)是这样一个概念:对于一个矩阵\(M\),我们可能希望将它分解为\(M=L+S\)的形式,其中\(L\)的秩比较低,而\(S\)的非零元素数量比较少(记为\(\|S......
  • 除去自身的最大因数 矩阵对角线互换
    7-2除去自身的最大因数输入一个整数,计算该整数除去自身的最大因数。输入格式:一个整数a。输出格式:一个整数,整数a除去自身的最大因数。输入样例:在这里给出一组输入。例如:6输出样例:在这里给出相应的输出。例如:3解题思路:1.题目意思:输入一个数,找到它除自......
  • 邻接矩阵存储创建有向图
    #include<iostream>usingnamespacestd;//邻接矩阵需要顶点表,二维矩阵,还有点数边数#defineMVNum100typedefstruct{charvexs[MVNum]; //顶点表intarcs[MVNum][MVNum]; //矩阵intvexnum,arcnum; //顶点数、边数}AMGraph;intLocateVex(AMGraphG,charv){//......
  • UG\NX二次开发 获取部件的4x4矩阵
    文章作者:里海方法1:输入部件occ,获取矩阵。用函数UF_ASSEM_ask_transform_of_occ(),比较直接。方法2:输入部件的实例或事例,获取矩阵。用函数UF_ASSEM_ask_component_data()。通过部件事例获取实例的方法函数:......
  • NX二次开发 转置矩阵 UF_MTX3_transpose
    简介:    NX二次开发转置矩阵UF_MTX3_transpose。代码:#include"me.hpp"externDllExportvoidufusr(char*param,int*returnCode,intrlen){UF_initialize();doubledMtx[9]={1.000000000,0.000000000,0.000000000,0.000000000......
  • 矩阵乘法 - 斐波那契前 n 项和
    题目题目描述求数列\(f_n=f_{n-2}+f_{n-1}\)的前\(n\)项的和,其中\(f_1=1,f_2=1\)。输出的数\(\bmod\10^9+7\)样例样例输入10样例输出143数据范围对于\(20\%\)的数据,有\(1\leqn\leq20\)对于\(100\%\)的数据,有\(1≤n<2^{63}\)分析这道题目矩阵乘法的......
  • c语言中向函数传递二维矩阵的方法
    在C语言中,向函数传递二维数组有几种方式,这主要取决于二维数组的大小是否已知。下面是几种常见的方式:  1)如果二维数组的大小已知,那么你可以在函数参数中直接指定数组的大小。例如: voidfunc(intarr[10][10]){...} 在这个例子中,func函数接受一个10x10的二维数组作为参数......