用c++编译程序,给你一个下标从 0 开始、大小为 m x n 的二维矩阵 grid ,请你求解大小同样为 m x n 的答案矩阵 answer 。 矩阵 answer 中每个单元格 (r, c) 的值可以按下述方式进行计算: 令 topLeft[r][c] 为矩阵 grid 中单元格 (r, c) 左上角对角线上 不同值 的数量。 令 bottomRight[r][c] 为矩阵 grid 中单元格 (r, c) 右下角对角线上 不同值 的数量。 然后 answer[r][c] = |topLeft[r][c] - bottomRight[r][c]| 。 返回矩阵 answer 。 矩阵对角线 是从最顶行或最左列的某个单元格开始,向右下方向走到矩阵末尾的对角线。 如果单元格 (r1, c1) 和单元格 (r, c) 属于同一条对角线且 r1 < r ,则单元格 (r1, c1) 属于单元格 (r, c) 的左上对角线。类似地,可以定义右下对角线。
时间: 2024-02-13 21:04:44 浏览: 16
好的,这是一个比较复杂的问题。不过,我可以给你提供一个 C++ 的实现。
首先,我们需要定义一个函数来计算一个单元格的 topLeft 值:
```
int getTopLeft(vector<vector<int>>& grid, int r, int c) {
int cnt = 0;
for(int i = 0; i < r; i++) {
for(int j = 0; j < c; j++) {
if(i != r && j != c && grid[i][j] != grid[r][c]) {
cnt++;
}
}
}
return cnt;
}
```
然后,我们还需要定义一个函数来计算一个单元格的 bottomRight 值:
```
int getBottomRight(vector<vector<int>>& grid, int r, int c) {
int cnt = 0;
int m = grid.size();
int n = grid[0].size();
for(int i = r; i < m; i++) {
for(int j = c; j < n; j++) {
if(i != r && j != c && grid[i][j] != grid[r][c]) {
cnt++;
}
}
}
return cnt;
}
```
最后,我们可以使用这两个函数来计算答案矩阵:
```
vector<vector<int>> diagonalDifference(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[0].size();
vector<vector<int>> answer(m, vector<int>(n));
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
answer[i][j] = abs(getTopLeft(grid, i, j) - getBottomRight(grid, i, j));
}
}
return answer;
}
```
这个函数会返回一个大小为 m x n 的答案矩阵。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)