
題目出處:https://leetcode.com/problems/set-matrix-zeroes/
如圖,已零為中心向上下左右四個方向的值都設為零。
姐這題我首先想到的是:
一、遍歷找出所有零的位子。
二、在遍歷一次把所有跟零在同一個行或列的數字全改成零。
coding不會花太多時間,代碼如下。
#python3 代碼:
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
location = []
for i in matrix:
if 0 in i:
place = 0
for j in i:
if j == 0:
location.append(place)
place += 1
matrix[matrix.index(i)][i.index(j)] = 0
for i in location:
for j in matrix:
matrix[matrix.index(j)][i] = 0
但只要提交給過就沒問題了嗎?有沒有更好的寫法?
這麼多for我自己看了就覺得不是個很好的寫法。更不用說主管看到。
其實寫太多for被主管看到有機會被罵的。如果牽扯到效率或資源問題。主管要求就會很嚴格。
但是即使不會被罵還是要養成一些良好的Coding Style。這樣對未來職涯發展我相信會有幫助的。
最顯著的例子還是當自己回頭看自己寫過的代碼。很容易忘記當時的發想。
所以靠註釋來幫助自己回憶。這就是寫代碼盡量加註釋的原因之一。而且變數命名盡量有意義。
竟量迴避使用i, j, k, x, y, z, arrayOne, arrayTwo等...哪怕只是改個變數,也可以增加代碼的可閱讀性。
每當我回想起來我剛入職兩個禮拜MySQL查詢語句用了join就被電到飛起的時候。我就想轉職。
所以歡迎各位來交流討論把代碼做個修改。
以上。