程式設計開發習題 Set Matrix Zeroes

2022-09-23 23:54:12 字數 2103 閱讀 1021

如果矩陣中存在0,那麼把0所在的行和列都置為0。要求在所給的矩陣上完成操作。

注意:最好的空間複雜度是常數空間

思路:1.建立乙個矩陣的拷貝,然後根據這個拷貝進行判斷o(mn)

2.建立乙個陣列,記錄矩陣為0的行和列下標o(m+n)

3.把有0的元素對映到首行和首列o(c)

這裡的複雜度是空間複雜度

class solution(object):

def setzeroes(self, matrix):

""":type matrix: list[list[int]]

:rtype: void do not return anything, modify matrix in-place instead.

"""first_row = false

first_col = false

m = len(matrix)

n = len(matrix[0])

for i in range(m):

if matrix[i][0] == 0:

first_col = true

for j in range(n):

if matrix[0][j] == 0:

first_row = true

for i in range(1, m):

for j in range(1, n):

if matrix[i][j] == 0:

matrix[i][0] = matrix[0][j] = 0

for i in range(1, m):

for j in range(1, n):

if matrix[0][j] == 0 or matrix[i][0] == 0:

matrix[i][j] = 0

if first_row:

for j in range(n):

matrix[0][j] = 0

if first_col:

for i in range(m):

matrix[i][0] = 0class solution:

# @param matrix, a list of lists of integers

# return nothing, modify matrix in place.

def setzeroes(self, matrix):

m , n = len(matrix), len(matrix[0])

row , col = [0 for i in range(m)] , [0 for i in range(n)]

for i in range(m):

for j in range(n):

if not matrix[i][j]:

row[i]=col[j]=1

for i in range(m):

if row[i]:

for j in range(n):

matrix[i][j]=0

for j in range(n):

if col[j]:

for i in range(m):

matrix[i][j]=0class solution:

# @param matrix, a list of lists of integers

# return nothing, modify matrix in place.

def setzeroes(self, matrix):

m , n = len(matrix), len(matrix[0])

temp = [[matrix[i][j] for j in range(n)] for i in range(m)]

for i in range(m):

for j in range(n):

if not temp[i][j]:

self.setzero(i,j,n,m,matrix)

def setzero(self,row,col,n,m,matrix):

for i in range(m):

matrix[i][col]=0

for j in range(n):

matrix[row][j]=0

程式設計開發練習題

急!災區的食物依然短缺!為了挽救災區同胞的生命,心繫災區同胞的你準備自己採購一些糧食支援災區,現在假設你一共有資金n元,而市場有m種大公尺,每種大公尺都是袋裝產品,其 不等,並且只能整袋購買。請問 你用有限的資金最多能採購多少公斤糧食呢?後記 人生是乙個充滿了變數的生命過程,天災 人禍 病痛是我們生...

沙漠之旅 程式設計開發習題

問題描述 小明準備來次穿越撒哈拉沙漠壯舉,他知道穿越沙漠是件冒險的事情,所以他準備了一輛有x個油箱的車來次沙漠之旅。有x個油箱,從前到後放成一排,編號為1 x。出發前小明對油箱進行了y次操作,其中有3種操作方式 1.修改乙個油箱的油量 2.求連續一段油箱的油量和 3.求連續一段油箱的油量最大值。對於...

輸出PATest 程式設計開發習題

給定乙個長度不超過10000的 僅由英文本母構成的字串。請將字元重新調整順序,按 patestpatest.這樣的順序輸出,並忽略其它字元。當然,六種字元的個數不一定是一樣多的,若某種字元已經輸出完,則餘下的字元仍按patest的順序列印,直到所有字元都被輸出。輸入格式 輸入在一行中給出乙個長度不超...