思路:要在matrix上面直接进行修改,如果边遍历,边修改的话,使得原来的matrix改变了,0的个数也变多了,所以要在原来的matrix中,直接记录下来0所在的位置的横坐标和纵坐标,再后面对matrix进行一起修改。
import copy
def change_row_column(nums, i, j): # 修改第i行和第j列的元素都变成0
for x in range(len(nums[0])):
nums[i][x] = 0 # row
for y in range(len(nums)):
nums[y][j] = 0 # column
return nums
class Solution(object):
def setZeroes(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: None Do not return anything, modify matrix in-place instead.
"""
idx = []
for i in range(len(matrix)):
for j in range(len(matrix[i])):
if matrix[i][j] == 0:
# nums = change_row_column(nums, i, j)
idx.append([i, j])
for i in range(len(idx)):
change_row_column(matrix, idx[i][0], idx[i][1])