给你一个 m x n
的矩阵,最开始的时候,每个单元格中的值都是 0
。
另有一个二维索引数组 indices
,indices[i] = [ri, ci]
指向矩阵中的某个位置,其中 ri
和 ci
分别表示指定的行和列(从 0
开始编号)。
对 indices[i]
所指向的每个位置,应同时执行下述增量操作:
ri
行上的所有单元格,加1
。ci
列上的所有单元格,加1
。
给你 m
、n
和 indices
。请你在执行完所有 indices
指定的增量操作后,返回矩阵中 奇数值单元格 的数目。
示例 1:
输入:m = 2, n = 3, indices = [[0,1],[1,1]] 输出:6 解释:最开始的矩阵是 [[0,0,0],[0,0,0]]。 第一次增量操作后得到 [[1,2,1],[0,1,0]]。 最后的矩阵是 [[1,3,1],[1,3,1]],里面有 6 个奇数。
示例 2:
输入:m = 2, n = 2, indices = [[1,1],[0,0]] 输出:0 解释:最后的矩阵是 [[2,2],[2,2]],里面没有奇数。
class Solution:
def oddCells(self, m: int, n: int, indices: List[List[int]]) -> int:
# 初始化一个 m x n 的全零矩阵
matrix = [[0] * n for _ in range(m)]
# 执行增量操作
for idx in indices:
row_idx, col_idx = idx[0], idx[1]
# 增加指定行上所有单元格的值
for i in range(n):
matrix[row_idx][i] += 1
# 增加指定列上所有单元格的值
for j in range(m):
matrix[j][col_idx] += 1
# 统计奇数值单元格的数量
odd_count = 0
for row in matrix:
for val in row:
if val % 2 != 0: # 如果单元格的值是奇数
odd_count += 1
return odd_count
# 初始化一个 m x n 的全零矩阵
matrix = [[0] * n for _ in range(m)]
for idx in indices:
row_idx, col_idx = idx[0], idx[1]
在代码中, 是一种解包(unpacking)操作,它用于从列表或元组中提取元素并分配给变量。 具体来说:
row_idx, col_idx = idx[0], idx[1]
idx
是一个包含两个元素的列表或元组。idx[0]
表示列表或元组中的第一个元素,即行索引。idx[1]
表示列表或元组中的第二个元素,即列索引。