Likou 중간 행렬 영점 조정

73. 매트릭스 영점 조정

주어진   행렬에서 요소가  이면 해당 행과 열의 모든 요소를  ​​0 으로 설정합니다 . 내부  알고리즘을 사용하십시오  .m x n 

예시 1:

입력: 행렬 = [[1,1,1],[1,0,1],[1,1,1]]
 출력: [[1,0,1],[0,0,0],[1 ,0,1]]

예 2:

입력: 행렬 = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
 출력: [[0,0,0,0],[0 ,4,5,0],[0,3,1,0]]

힌트:

  • m == matrix.length
  • n == matrix[0].length
  • 1 <= m, n <= 200
  • -231 <= matrix[i][j] <= 231 - 1

고급의:

  • 직관적인 해결책은    추가 공간을 사용하는 것이지만 이는 좋은 해결책이 아닙니다.O(mn)
  • 간단한 개선은   추가 공간을 사용하는 것이지만 이것이 여전히 최선의 해결책은 아닙니다.O(m + n)
  • 일정한 공간만을 사용하여 솔루션을 생각해 낼 수 있습니까?
def setZeroes(matrix):
    m, n = len(matrix), len(matrix[0])   # 获取矩阵的行数m和列数n
    rows, cols = set(), set()            # 初始化两个集合,用于存放需要置零的行和列的索引

    for i in range(m):
        for j in range(n):               # 使用两个嵌套循环遍历矩阵中的每个元素
            if matrix[i][j] == 0:       # 如果当前元素为0
                rows.add(i)              # 将当前元素的行索引添加到rows集合中
                cols.add(j)              # 将当前元素的列索引添加到cols集合中

    for i in rows:                      # 对于需要置零的每一行
        matrix[i] = [0] * n             # 使用列表乘法设置整行为0

    for j in cols:                      # 对于需要置零的每一列
        for i in range(m):              # 使用循环遍历每一行
            matrix[i][j] = 0            # 将对应的元素置为0

물론입니다. 위의 코드를 한 줄씩 설명하겠습니다.

 
 

python코드 복사

def setZeroes(matrix):

이름이 지정된 함수는 setZeroes매개변수로 정의됩니다 matrix.

 
 

python코드 복사

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

행렬의 행 m과 열 수를 가져옵니다 n.

 
 

python코드 복사

rows, cols = set(), set()

0으로 설정해야 하는 행 및 열 인덱스를 저장하기 위해 두 개의 컬렉션 rows합계를 초기화합니다.cols

 
 

python코드 복사

for i in range(m): for j in range(n):

두 개의 중첩 루프를 사용하여 행렬의 각 요소를 반복합니다.

 
 

python코드 복사

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

현재 요소가 0인지 확인하십시오.

 
 

python코드 복사

rows.add(i) cols.add(j)

현재 요소가 0이면 현재 요소의 행 인덱스가 컬렉션 i에 추가되고 열 인덱스가 컬렉션 에 추가됩니다 .rowsjcols

 
 

python코드 복사

for i in rows: matrix[i] = [0] * n

rows컬렉션의 각 인덱스 에 대해 i해당 행을 모두 0으로 설정합니다. 여기서는 Python 목록의 곱셈 기능이 사용됩니다.

 
 

python코드 복사

for j in cols: for i in range(m):

cols컬렉션의 각 인덱스 에 대해 j중첩 루프를 사용하여 각 행을 반복합니다.

 
 

python코드 복사

matrix[i][j] = 0

열 인덱스가 있는 요소를 j0으로 설정합니다.

위의 코드는 한 줄씩 설명되어 있습니다. 즉, 이 코드는 먼저 어떤 행과 열을 0으로 설정해야 하는지 결정한 다음 실제로 0으로 설정을 수행합니다.

Supongo que te gusta

Origin blog.csdn.net/sinat_37574187/article/details/133282050
Recomendado
Clasificación