C++矩阵中奇数值单元格
假设n和m是矩阵的维度,它们被初始化为零。给出索引,其中indices[i] = [ri, ci]。对于每一对[ri, ci],我们必须将第ri行和第ci列中的所有单元格递增1。输出将是在对所有索引应用递增后矩阵中奇数值单元格的数量。
为了解决这个问题,我们将遵循以下步骤:
- 初始化 odd := 0,x := 矩阵的行数
- 创建一个矩阵 mat
- 对于 i 从 0 到 x
- r = input[i, 0],c = input[i, 1]
- 对于 j 从 0 到 m – 1
- mat[r, j] := mat[r, j] + 1
- 对于 j 从 0 到 n – 1
- mat[j, c] := mat[j, c] + 1
- 对于 i 从 0 到 n – 1
- 对于 j := 0 到 m – 1
- odd := odd + (mat[i, j] 与 1 进行按位或运算)
- 对于 j := 0 到 m – 1
- 返回 odd
示例
让我们看看下面的实现,以便更好地理解:
#include <bits/stdc++.h> using namespace std; class Solution { public: int oddCells(int n, int m, vector<vector<int>>& in) { int odd = 0; int x = in.size(); vector < vector <int> > mat(n, vector <int>(m)); for(int i = 0; i < x ;i++){ int r = in[i][0]; int c = in[i][1]; for(int j = 0; j < m; j++){ mat[r][j]++; } for(int j = 0; j < n; j++){ mat[j][c]++; } } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++)odd += mat[i][j] & 1; } return odd; } }; main(){ Solution ob; vector<vector<int>> c = {{0,1},{1,1}}; cout << ob.oddCells(2,3,c); }
输入
2 3 {{0,1},{1,1}}
输出
6
广告