Find Valid Matrix Given Row and Column Sums

MediumArrayGreedyMatrix

Solution

export function restoreMatrix(rowSum: number[], colSum: number[]): number[][] {
  const [m, n] = [rowSum.length, colSum.length];
  const answer = Array.from({ length: m }, () => new Array(n).fill(0));
  let [row, col] = [0, 0];
  while (row < m && col < n) {
    const value = Math.min(rowSum[row], colSum[col]);
    answer[row][col] = value;
    rowSum[row] -= value;
    colSum[col] -= value;
    if (rowSum[row] === 0) {
      row += 1;
    }
    if (colSum[col] === 0) {
      col += 1;
    }
  }
  return answer;
}