清除行列

题目描述

请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零。

给定一个N阶方阵int[][](C++中为vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]方阵(C++中为vector>),保证n小于等于300,矩阵中的元素为int范围内。

测试样例:

[[1,2,3],[0,1,2],[0,0,1]]
返回:[[0,0,3],[0,0,0],[0,0,0]]
class Clearer {
public:
    vector<vector<int>> clearZero(vector<vector<int>> mat, int n) {
        // write code here
        //vector<vector<int>> res;
        if(mat.size() == 0)
            return mat;

        int rowSize = mat.size();
        int colSize = mat[0].size();

        bool row[300] = {0};
        bool col[300] = {0};

        for(int i = 0;i < rowSize; i++){
            for(int j = 0;j < colSize; j++){
                if(mat[i][j] == 0){
                    row[i] = true;
                    col[j] = true;
                }
            }
        }

        for(int i = 0;i < rowSize;i++){
            for(int j = 0;j < colSize;j++){
                if(row[i] || col[j]){
                    mat[i][j] = 0;
                }
            }
        }

        return mat;
    }
};
时间: 2024-10-02 21:32:18

清除行列的相关文章

1.7数组-清除行列

题目描述 请编写一个算法,若MxN矩阵中某个元素为0,则将其所在的行与列清零. 给定一个MxN的int[][]矩阵(C++中为vector<vector>)mat和矩阵的阶数n,请返回完成操作后的int[][]矩阵(C++中为vector<vector>),保证n小于等于300,矩阵中的元素为int范围内. 测试样例: [[1,2,3],[0,1,2],[0,0,1]] 返回:[[0,0,3],[0,0,0],[0,0,0]] 解法:循环搜索,统计记录0所在的行列坐标,然后进行清0

程序员面试金典算法题

空格替换 题目描述 请编写一个方法,将字符串中的空格全部替换为"%20".假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成. 给定一个string iniString 为原始的串,以及串的长度 int len, 返回替换后的string. 测试样例: "Mr John Smith",13 返回:"Mr%20John%20Smith" "Hello World&qu

Cracking the Coding Interview

第一章:数组与字符串 1 数组与字符串 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符.保证字符串中的字符为ASCII字符.字符串的长度小于等于3000. 测试样例: "aeiou" 返回:True "BarackObama" 返回:False 思路:(1) 两个for循环,比较后面的是否相同 O(

用VBA取得EXCEL有效行列数方法研究

作者:iamlaosong 我常用下面方式取得有效行数: maxrow=sheets(1).[A65536].End(xlUp).Row 实际使用中发现这种方法存在2个问题: 1.高低版本不兼容,2007版最大行数增加以后,就不能用65536了,而要用1048576,即 maxrow = sheets(1).[A1048576].End(xlUp).Row 2.当最后一行不为空时,用这个方法取不到正确的值. 下面说明用VBA得到EXCEL表格中的行数和列数的特点,以便根据需要选用 每种方法中上面

多行列单选按钮组RadioButton的实现

Android通过RadioGroup设置一组单选按钮RadioButton,但在RadioGroup中只能设置按钮排序为横排或纵排.当需要实现多行多列的单选按钮组时,查了网上的方法,发现两种解决方式: 一.通过在xml中设置margin android:layout_marginLeft="-100dip" android:layout_marginTop="40dip" 这种方式兼容性不理想,对于不同尺寸的设备需对margin进行相应调整. 二.对RadioGr

对比特币挖矿木马分析研究和清除

本文作者:simeon 来源:i春秋社区 一.什么是比特币系统 有关比特币的专业知识讲解的内容资料很多,我这里只是简单通俗的记录下个人的学习和对他的理解.大家往往看到比特币首先想问的它到底是什么,是不是钱.可以肯定的回答大家,他是钱,但是他不只是个体,他其实是一个虚拟的电子货币支付系统,是的是一个系统. 所以我这里说了这么多的废话,就是希望大家以后看到比特币,我们不是把它看成是一个硬币,而是我们一看到比特币,我就立马想到的是它其实是一个系统(电子币虚拟支付系统).只要大家能这样想,后面讲的内容大

关于RECOVERY清除数据的分析

[前言] 讨论:双清和清空所有数据的问题 说明:以前写的帖子都写三清,那个是为了保险起见才叫大家三项清除,毕竟人都有刚开始的时候,但看了郭贤普的帖子<系统与数据兼容性测试>之后,我觉得有必要说说这个问题,顺便说说双系统共存的时候为什么切换系统要清空所有数据. [分析内容] 分析关键名词:清空缓存.清空用户数据.清空所有数据[点这里是郭贤普帖子] 一.清空缓存 安卓手机的cache(缓存),如果是计算机它的功能就是CPU与内存数据交换的一个中介存储,但是在安卓手机上它也是一样的道理,就如郭贤普所

关于浮动与清除浮动

页面布局方式,主要包含:文档流.浮动层.float属性. ?html页面的标准文档流(默认布局)是:从上到下,从左到右,遇块(块级元素)换行. ?浮动层:给元素的float属性赋值后,就是脱离文档流,进行左右浮动,紧贴着父元素(默认为body文本区域)的左右边框.而此浮动元素在文档流空出的位置,由后续的(非浮动)元素填充上去:块级元素直接填充上去,若跟浮动元素的范围发生重叠,浮动元素覆盖块级元素.内联元素:有空隙就插入. ?float属性包括left(元素向左浮动).right(元素向右浮动).

linux 清除内存和Cache方法

Linux下释放内存和缓存方法 $ free -m 运行sync将cache的内容写回硬盘 $ sync #格式:sync 强制将内存中的文件缓冲内容写到磁盘. 通过修改proc系统的drop_caches清理free的cache $ echo 3 > /proc/sys/vm/drop_caches $ free -m 仅清除页面缓存(PageCache) # echo 1 > /proc/sys/vm/drop_caches 清除目录项和inode # echo 2 > /proc/