程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python描述 LeetCode 73. 矩陣置零

編輯:Python

Python描述 LeetCode 73. 矩陣置零

大家好,我是亓官劼(qí guān jié ),在【亓官劼】公眾號、CSDN、GitHub、B站等平台分享一些技術博文,主要包括前端開發、python後端開發、小程序開發、數據結構與算法、docker、Linux常用運維、NLP等相關技術博文,時光荏苒,未來可期,加油~

如果喜歡博主的文章可以關注博主的個人公眾號【亓官劼】(qí guān jié),裡面的文章更全更新更快。如果有需要找博主的話可以在公眾號後台留言,我會盡快回復消息.


本文原創為【亓官劼】(qí guān jié ),請大家支持原創,部分平台一直在惡意盜取博主的文章!!! 全部文章請關注微信公眾號【亓官劼】。

題目

給定一個 *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]]

提示:

  • m == matrix.length
  • n == matrix[0].length
  • 1 <= m, n <= 200
  • -231 <= matrix[i][j] <= 231 - 1

進階:

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

Python描述

只用O(1)的空間,那就找第一個有0的行作為標記行,記錄需要置零的列,然後置零即可

class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
""" Do not return anything, modify matrix in-place instead. """
n,m = len(matrix),len(matrix[0])
flag = -1
for idx,item in enumerate(matrix):
if 0 in item:
flag = idx
for j in range(m):
matrix[flag][j] = 1 if matrix[flag][j] == 0 else 0
break
if flag == -1:
return
for i in range(n):
if i == flag:
continue
if 0 in matrix[i]:
for j in range(m):
matrix[flag][j] = 1 if matrix[i][j] == 0 or matrix[flag][j] else 0
matrix[i][j] = 0
for j in range(m):
if matrix[flag][j] == 1:
for i in range(n):
matrix[i][j] = 0

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved