🔴力扣原题:
🟠题目简述:
给你一个 m x n 的矩阵,最开始的时候,每个单元格中的值都是 0。
另有一个二维索引数组 indices,indices[i] = [ri, ci] 指向矩阵中的某个位置,其中 ri 和 ci 分别表示指定的行和列(从 0 开始编号)。
对 indices[i] 所指向的每个位置,应同时执行下述增量操作:
ri 行上的所有单元格,加 1 。
ci 列上的所有单元格,加 1 。
给你 m、n 和 indices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇数值单元格 的数目。
🟡解题思路:
- 模拟大法好;
- 遍历
indices
,拿出ri/ci
,然后对对应的行、列进行操作; - 遍历
matrix
,计数奇数个数即可; - over;
🟢C++代码:
class Solution {
public:
int oddCells(int m, int n, vector<vector<int>>& indices) {
int res = 0;
vector<vector<int>> matrix(m, vector<int>(n));
for (auto &index : indices) {
for (int i = 0; i < n; i++) {
matrix[index[0]][i]++;
}
for (int i = 0; i < m; i++) {
matrix[i][index[1]]++;
}
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] & 1) {
res++;
}
}
}
return res;
}
};