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-2025 CODEPRJ.COM