溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LeetCode中二維數組如何實現零矩陣

發布時間:2021-12-15 11:36:25 來源:億速云 閱讀:163 作者:小新 欄目:大數據

LeetCode中二維數組如何實現零矩陣

在LeetCode中,零矩陣(Zero Matrix)是一個常見的算法問題。給定一個二維數組(矩陣),如果某個元素為0,則將其所在的行和列的所有元素都設置為0。本文將介紹如何實現這一功能。

問題描述

給定一個 m x n 的矩陣,如果矩陣中的某個元素為0,則將其所在的行和列的所有元素都設置為0。要求在原矩陣上進行修改,不使用額外的空間。

解決思路

  1. 標記法

    • 首先遍歷矩陣,找到所有值為0的元素,并記錄它們所在的行和列。
    • 然后再次遍歷矩陣,將標記的行和列中的所有元素設置為0。
  2. 原地修改

    • 使用矩陣的第一行和第一列來記錄是否需要將對應的行或列設置為0。
    • 首先檢查第一行和第一列是否需要設置為0。
    • 然后遍歷矩陣的其他部分,如果某個元素為0,則將其所在的行和列的第一個元素設置為0。
    • 最后根據第一行和第一列的標記,將對應的行和列設置為0。

代碼實現

def setZeroes(matrix):
    m, n = len(matrix), len(matrix[0])
    first_row_has_zero = any(matrix[0][j] == 0 for j in range(n))
    first_col_has_zero = any(matrix[i][0] == 0 for i in range(m))
    
    # 使用第一行和第一列來標記
    for i in range(1, m):
        for j in range(1, n):
            if matrix[i][j] == 0:
                matrix[i][0] = 0
                matrix[0][j] = 0
    
    # 根據標記設置0
    for i in range(1, m):
        for j in range(1, n):
            if matrix[i][0] == 0 or matrix[0][j] == 0:
                matrix[i][j] = 0
    
    # 處理第一行和第一列
    if first_row_has_zero:
        for j in range(n):
            matrix[0][j] = 0
    if first_col_has_zero:
        for i in range(m):
            matrix[i][0] = 0

總結

通過使用矩陣的第一行和第一列來記錄需要設置為0的行和列,我們可以在不使用額外空間的情況下實現零矩陣。這種方法的時間復雜度為O(m*n),空間復雜度為O(1),是一種高效的解決方案。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女