Divide & Conquer

3537. Fill a Special Grid

function specialGrid(n: number): number[][] {
  const size = 1 << n;
  const grid: number[][] = Array.from({ length: size }, () =>
    new Array(size).fill(0)
  );

  let val = 0;

  function solve(r: number, c: number, size: number): void {
    if (size === 1) {
      grid[r][c] = val++;
      return;
    }
    const s = size / 2;
    solve(r, c + s, s); // top right
    solve(r + s, c + s, s); // bottom right
    solve(r + s, c, s); // bottom left
    solve(r, c, s); // top left
  }

  solve(0, 0, size);

  return grid;
}

Last updated

Was this helpful?