1840. 矩阵还原
现有一个nn行mm列的矩阵beforebefore,对于before里的每一个元素before[i][j]before[i][j],我们会使用以下算法将其转化为after[i][j]after[i][j]。现给定afterafter矩阵,请还原出原有的矩阵beforebefore。
s = 0
for i1: 0 -> i
for j1: 0 -> j
s = s + before[i1][j1]
after[i][j] = s
样例
Input:
2
2
[[1,3],[4,10]]
Output: [[1,2],[3,4]]
Explanation:
before:
1 2
3 4
after:
1 3
4 10
注意事项
n,m \leq 1\,000n,m≤1000
public class Solution {
/**
* @param n: the row of the matrix
* @param m: the column of the matrix
* @param after: the matrix
* @return: restore the matrix
*/
public int[][] matrixRestoration(int n, int m, int[][] after) {
int[][] before = new int[after.length][after[0].length];
before[0][0] = after[0][0];
for (int i = after.length - 1; i >= 0; i--) {
for (int j = after[i].length - 1; j >= 0; j--) {
if (j > 0 && i > 0) {
before[i][j] = after[i][j] - after[i][j - 1] - after[i - 1][j] + after[i - 1][j - 1];
} else if (j > 0) {
before[i][j] = after[i][j] - after[i][j - 1];
} else if (i > 0) {
before[i][j] = after[i][j] - after[i - 1][j];
} else {
before[i][j] = after[i][j];
}
}
}
return before;
}
}