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;
    }
};