Skip to content

Latest commit

 

History

History
52 lines (45 loc) · 1.32 KB

73.md

File metadata and controls

52 lines (45 loc) · 1.32 KB

73. Set Matrix Zeroes

有一个m*n的矩阵,如果上面某个位置的值是0,则将其整个行与整个列都设为0

思路:先用两个列表记录哪个行或列的值为0, 然后遍历matrix,如果某位置的行或列为0,则该位置为0

class Solution:
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: void Do not return anything, modify matrix in-place instead.
        """
        # 5 star, 
        cols = [0 for _ in range(len(matrix))]
        rows = [0 for _ in range(len(matrix[0]))]
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 0:
                    cols[i], rows[j] = 1, 1
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if cols[i] or rows[j]:
                    matrix[i][j] = 0

Go:

// 5 star, 用两个切片分别记录各行和列是否有0
func setZeroes(matrix [][]int)  {
	cols := make([]int, len(matrix))
	rows := make([]int, len(matrix[0]))

	for i, _ := range matrix {
		for j, _ := range matrix[0] {
			if matrix[i][j] == 0 {
				cols[i] = 1
				rows[j] = 1
			}
		}
	}

	for i, _ := range matrix {
		for j, _ := range matrix[0] {
			if cols[i] == 1 || rows[j] == 1 {
				matrix[i][j] = 0
			}
		}
	}
}