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


思路:先遍历一遍找到0,然后将其他们的行与列分别记下来。接着再把相应行列置0。

public void setZeros(int[][] matrix)
{
    boolean[] row = new boolean[matrix.length];
    boolean[] column = new boolean[matrix[0].length];
    
    //确认哪些行哪些列需要置0
    for(int i = 0; i < matrix.length; i++)
    {
        for(int j = 0; j < matrix[0].length; j++)
        {
            if (matrix[i][j] == 0)
            {
                row[i] = true;
                column[j] = true;
            }
        }
    }
    
    //置0
    for(int i = 0; i < matrix.length; i++)
    {
        for(int j = 0; j < matrix[0].length; j++)
        {
            if (row[i] || column[j])
            {
                matrix[i][j] = 0;
            }
        }
    }   
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



猜您在找 Leetcode练习(Python):数组类:第73题:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 有一个3X4的矩阵,要求编写程序求出其中值最大的那个元素的值,以及其所在的行号和列号 有一个3*4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号 找数组最值 按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。 void InputArray(int *p, int m, int n); int FindMax(int *p, int m, int n, int *pRow, int *pCol); Leetcode练习(Python):数组类:第54题:给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 Leetcode练习(Python):二分查找类:第240题:搜索二维矩阵 II:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 螺旋填数:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。 有一个3*4的矩阵,编程求出其中最大值,以及其所在的行号和列号。 有一个3*4的矩阵,编程求出其中最大值,以及其所在的行号和列号。 MATLAB小函数:找出矩阵中某一列(行)元素全相等(不等)的列(行)所在下标及对应元素值
 
粤ICP备18138465号  © 2018-2026 CODEPRJ.COM