Leetcode練習(Python):數組類:第73題:給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地算法。


題目:
給定一個 m x n 的矩陣,如果一個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地算法。
思路:

進階:

一個直接的解決方案是使用  O(mn) 的額外空間,但這並不是一個好的解決方案。
一個簡單的改進方案是使用 O(m + n) 的額外空間,但這仍然不是最好的解決方案。
你能想出一個常數空間的解決方案嗎?

本例是使用額外空間為 O(m + n)的方法,之后會增加常數空間的解決方案。

程序:O(m + n)

class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        row = len(matrix)
        column = len(matrix[0])
        auxiliary1 = [False] * column
        auxiliary2 = [False] * row
        for index1 in range(row):
            if 0 in matrix[index1]:
                auxiliary2[index1] = True
            for index2 in range(column):
                if matrix[index1][index2] == 0:
                    auxiliary1[index2] = True
        for index3 in range(row):
            if auxiliary2[index3] == True:
                for index4 in range(column):
                    matrix[index3][index4] = 0
        for index5 in range(column):
            if auxiliary1[index5] == True:
                for index6 in range(row):
                    matrix[index6][index5] = 0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 1.7編寫一個算法,若M*N矩陣中某個元素為0,則將其所在的行與列清零。 Leetcode練習(Python):二分查找類:第240題:搜索二維矩陣 II:編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target。該矩陣具有以下特性: 每行的元素從左到右升序排列。 每列的元素從上到下升序排列。 Leetcode練習(Python):數組類:第75題:給定一個包含紅色、白色和藍色,一共 n 個元素的數組,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。 此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 注意: 不能使用代碼庫中的排序函數來解決這道題。 Leetcode練習(Python):數組類:第128題:給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間復雜度為 O(n)。 Leetcode練習(Python):第448題:找到所有數組中消失的數字:給定一個范圍在 1 ≤ a[i] ≤ n ( n = 數組大小 ) 的 整型數組,數組中的元素一些出現了兩次,另一些只出現一次。 Leetcode練習(Python):數組類:第189題:給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。 有一個3X4的矩陣,要求編寫程序求出其中值最大的那個元素的值,以及其所在的行號和列號 Leetcode練習(python):第414題:第三大的數:給定一個非空數組,返回此數組中第三大的數。如果不存在,則返回數組中最大的數。要求算法時間復雜度必須是O(n)。 Leetcode練習(Python):回溯算法類:第131題:分割回文串:給定一個字符串 s,將 s 分割成一些子串,使每個子串都是回文串。 返回 s 所有可能的分割方案。 Leetcode練習(Python) :數組類:第62題:一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。 問總共有多少條不同的路徑?
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM