首页 > 其他分享 >矩阵置零(标记数组)

矩阵置零(标记数组)

时间:2024-12-20 20:53:01浏览次数:4  
标签:matrix 标记 int 矩阵 vector 数组

给定一个 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]]

思路:使用标记数组,用两个标记数组分别记录每一行和每一列是否有零出现,具体地,我们首先遍历该数组一次,如果某个元素为 0,那么就将该元素所在的行和列所对应标记数组的位置置为 true。最后我们再次遍历该数组,用标记数组更新原数组即可。

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        //使用标记数组,记录行数与列数
        int m = matrix.size();
        int n = matrix[0].size();
        vector<int> row(m,0);
        vector<int> col(n,0);
        //标记数组
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(matrix[i][j]==0){
                    row[i]=1;
                    col[j]=1;
                }
            }
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(row[i]==1||col[j]==1){
                    matrix[i][j] = 0;
                }
            }
        }
    }
};

 

标签:matrix,标记,int,矩阵,vector,数组
From: https://www.cnblogs.com/yueshengd/p/18619952

相关文章

  • 215. 数组中的第K个最大元素
    数组中的第K个最大元素给定整数数组nums和整数k,请返回数组中第k个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。你必须设计并实现时间复杂度为O(n)的算法解决此问题。示例1:输入:[3,2,1,5,6,4],k=2输出:5示例2:......
  • 小发现-->对“删除”数组元素的不同做法
     删除的本质:对于数组元素删除,其实不能算是删除,毕竟你数组是一片连续存储的空间,你要是真的删除了一个地方那还了得了,所以删除无非就是在输出结果的时候看上去像是某个地方的元素被删除了,实际上呢,要么是被别的元素覆盖了,要么是被标记了,跳过了这个位置进行输出,那么接下来就对着......
  • C#调用c语言dll,并且传入byte数组或字符串,简单实例
    前言在C#中调用dll,可能会出现程序一开始可以运行,但过一会儿后出现内存错误——尝试读取或写入受保护的内存。这通常指示其他内存已损坏。这是由于C#的托管内存机制,而C语言中是非托管内存。如果参数传入dll后,C#提前回收了内存或者移动了数据,将会出现错误。解决方法是,在C#传入dll......
  • 集星云推短视频矩阵系统:重塑短视频营销格局
    在瞬息万变的数字化时代,短视频已然成为连接用户与品牌的桥梁,为企业和个人创作者提供了前所未有的营销机遇。然而,面对日益激烈的市场竞争,如何高效、精准地实施短视频营销策略,成为众多企业和创作者面临的重大挑战。在此背景下,集星云推短视频矩阵系统应运而生,它以其卓越的功能、高......
  • 53. 最大子数组和
    题目链接解题思路:子数组问题,考虑以i结尾,或者以i开头结果怎么样。本题,以i开头结果是如何?从后往前遍历,假设i+1的结果大于0,为x,那么,求i时,结果就是nums[i]+x,如果x小于0,那么结果就是nums[i]代码classSolution:defmaxSubArray(self,nums:List[int])->int:......
  • leetcode 2592. 最大化数组的伟大值
    2592.最大化数组的伟大值法一:排序丑陋的代码classSolution{public:intmaximizeGreatness(vector<int>&nums){sort(nums.begin(),nums.end());intsize=nums.size(),res=0;for(inti=0,j=0;i<size&&j<size;+......
  • 一文告诉你什么是RACI矩阵——附应用方案
    RACI是一个常用于项目管理和团队协作中的责任分配矩阵(ResponsibilityAssignmentMatrix)。它清晰地界定了项目或工作中每个角色(或个体)的职责,确保所有相关方都明确自己的任务和责任范围。RACI矩阵中的每个字母代表不同的责任类型:R(Responsible)负责:○负责执行任务的人。这是直接负......
  • 写一个方法将多个数组合并成一个数组
    在前端开发中,JavaScript是一种常用的编程语言。在JavaScript中,你可以使用多种方法来合并数组。以下是一个简单的示例,展示如何使用Array.prototype.concat()方法来合并多个数组:functionmergeArrays(...arrays){letmergedArray=[];for(leti=0;i<arrays.......
  • Java学习,数组中查找指定元素
    Java中查找数组中的指定元素是一个常见的操作。数组中查找指定的元素,并返索引:publicclassFindElementInArray{  publicstaticvoidmain(String[]args){    int[]numbers={10,20,30,40,50};    inttarget=30;    intindex......
  • Java学习,数组是否相等
    Java中判断两个数组是否相等,不是直接的事情,数组对象之间的 equals()方法,并不会逐个比较数组元素,是比较数组对象的引用是否相同(即它们是否指向内存中同一个位置)。要判断两个数组,是否包含相同的元素并且顺序也相同。判断两个整数数组是否相等publicclassArrayEqualityChecke......