跳到主要内容

1252.奇数值单元格的数目

链接:1252.奇数值单元格的数目
难度:Easy
标签:数组、数学、模拟
简介:给你 m、n 和 indices 。请你在执行完所有 indices 指定的增量操作后,返回矩阵中 奇数值单元格 的数目。

题解 1 - cpp

  • 编辑时间:2022-07-12
  • 执行用时:4ms
  • 内存消耗:7.9MB
  • 编程语言:cpp
  • 解法介绍:模拟遍历。
class Solution {
public:
int oddCells(int m, int n, vector<vector<int>>& indices) {
vector<vector<int>> list(m, vector<int>(n, 0));
for (auto& item : indices) {
for (int i = 0; i < n; i++) list[item[0]][i]++;
for (int i = 0; i < m; i++) list[i][item[1]]++;
}
int ans = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (list[i][j] & 1) ans++;
}
}
return ans;
}
};

题解 2 - cpp

  • 编辑时间:2022-07-12
  • 执行用时:4ms
  • 内存消耗:7.5MB
  • 编程语言:cpp
  • 解法介绍:统计奇数行和奇数列再减去重复部分。
class Solution {
public:
int oddCells(int m, int n, vector<vector<int>> &indices) {
vector<int> rows(m), cols(n);
for (auto &item : indices) {
rows[item[0]]++;
cols[item[1]]++;
}
int rowCnt = 0, colCnt = 0;
for (auto &row : rows)
if (row & 1) rowCnt++;
for (auto &col : cols)
if (col & 1) colCnt++;
return rowCnt * n + colCnt * m - 2 * rowCnt * colCnt;
}
};