本文基于各個大佬的文章
上點關注下點贊,明天一定更燦爛!
前言
????????Python基礎好像會了又好像沒會,所有我直接開始刷leetcode一邊抄樣例代碼一邊學習吧。本系列文章用來記錄學習中的思考,寫給自己看的,也歡迎大家在評論區指導~
????????您的每一條評論都會讓我更有學習的動力。
一、分析題目
二、思路以及代碼
不要啊,矩陣問題,這個我真的一點都找不到規律,雖然級別是中等,在我這邊算難上加難。
我有個想法是這樣的:因為是把同行同列置零,所有置零后相當于縮小了一個單位矩陣,每次看當前矩陣的第一行第一列有沒有0,有的話就置零,縮小矩陣,沒有的話看第二行第二列。不行不行我腦子又亂了,看題解吧,遇到困難就要放棄。73. 矩陣置零 - 力扣(LeetCode)
博主第一個用的算是打暴力了哈哈,喜歡喜歡
class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""row = len(matrix)col = len(matrix[0])row_zero = set()col_zero = set()for i in range(row):for j in range(col):if matrix[i][j] == 0:row_zero.add(i)col_zero.add(j)for i in range(row):for j in range(col):if i in row_zero or j in col_zero:matrix[i][j] = 0
第二個好像思路跟我開始的有點一樣,利用矩陣本身的第一行和第一列作為“標記”或者“輔助存儲空間”,來記錄哪些行和哪些列需要被置為零。
class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""row = len(matrix)col = len(matrix[0])row0_flag = Falsecol0_flag = False# 找第一行是否有0for j in range(col):if matrix[0][j] == 0:row0_flag = Truebreak# 第一列是否有0for i in range(row):if matrix[i][0] == 0:col0_flag = Truebreak# 把第一行或者第一列作為 標志位for i in range(1, row):for j in range(1, col):if matrix[i][j] == 0:matrix[i][0] = matrix[0][j] = 0#print(matrix)# 置0for i in range(1, row):for j in range(1, col):if matrix[i][0] == 0 or matrix[0][j] == 0:matrix[i][j] = 0if row0_flag:for j in range(col):matrix[0][j] = 0if col0_flag:for i in range(row):matrix[i][0] = 0
三、本題收獲
我還是更適合打暴力,y1s1
總結
? ? ? ? 只會打暴力,基礎一團糟,明天再學吧老鐵,別真學會了。