https://youtu.be/DdwGGU5LGdA?si=ciihM075wd64ohnV
# zeros = [] 배열 사용 => 시간 복잡도: O(m*n), 공간 복잡도 O(m*n)
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
# 시간 복잡도: O(m*n), 공간 복잡도 O(m*n)
zeros = []
for r in range(len(matrix)):
for c in range(len(matrix[0])):
if matrix[r][c] == 0:
zeros.append((r,c))
for r, c in zeros:
for i in range(len(matrix)):
matrix[i][c] = 0
for j in range(len(matrix[0])):
matrix[r][j] = 0
# zeros_rows = set(), zeros_cols = set(), 집합 사용 => 시간 복잡도: O(m*n), 공간 복잡도 O(m + n),
- 공간 복잡도 O(m + n) 로 개선
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
# 시간 복잡도: O(m*n), 공간 복잡도 O(m*n) -> O(m + n) 으로 개선
zero_rows = set() # 0 인 row 인덱스 저장
zero_cols = set() # 0 인 col 인덱스 저장
for r in range(len(matrix)):
for c in range(len(matrix[0])):
if matrix[r][c] == 0:
zero_rows.add(r)
zero_cols.add(c)
for r in zero_rows:
for i in range(len(matrix[0])):
matrix[r][i] = 0
for c in zero_cols:
for i in range(len(matrix)):
matrix[i][c] = 0
# first_row_zero, first_col_zero, 변수 사용 => 시간 복잡도: O(m*n), 공간 복잡도 O(1),
- 공간 복잡도 O(1) 로 개선
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
# 시간 복잡도: O(m*n), 공간 복잡도 O(m*n) -> O(m + n) -> O(1) 으로 개선
# any: 하나라도 0 있으면 True, 아니면, False
first_row_zero = any(matrix[0][c] == 0 for c in range(len(matrix[0])))
first_col_zero = any(matrix[r][0] == 0 for r in range(len(matrix)))
# index == 1의 경우는 위에 초기값에서 순회했음
for r in range(1, len(matrix)):
for c in range(1, len(matrix[0])):
if matrix[r][c] == 0:
matrix[r][0] = 0
matrix[0][c] = 0
for r in range(1, len(matrix)):
for c in range(1, len(matrix[0])):
if matrix[r][0] == 0 or matrix[0][c] == 0:
matrix[r][c] = 0
if first_row_zero:
for i in range(len(matrix[0])):
matrix[0][i] = 0
if first_col_zero:
for i in range(len(matrix)):
matrix[i][0] = 0
'LeetCode > Top Interview 150' 카테고리의 다른 글
228. Summary Ranges (0) | 2024.12.02 |
---|---|
289. Game of Life (0) | 2024.12.02 |
219. Contains Duplicate II (0) | 2024.12.01 |
202. Happy Number (0) | 2024.12.01 |
Hashmap: 1. Two Sum ★ (1) | 2024.12.01 |