1605. Find Valid Matrix Given Row and Column Sums

class Solution {
public:
    vector<vector<int>> restoreMatrix(vector<int>& rowSum, vector<int>& colSum)
    {
        int m = rowSum.size(), n = colSum.size();

        vector<int> curRowSum(m);
        vector<int> curColSum(n);

        vector<vector<int>> matrix(m, vector<int>(n));

        for (int i = 0; i < m; ++i)
        {
            for (int j = 0; j < n; ++j)
            {
                matrix[i][j] = min(rowSum[i] - curRowSum[i], colSum[j] - curColSum[j]);
                curRowSum[i] += matrix[i][j];
                curColSum[j] += matrix[i][j];
            }
        }
        return matrix;
    }
};
  • T: O(MN)O(M * N)
  • S: O(M+N)O(M + N)