Where Will the Ball Fall
MediumArrayMatrixSimulation
Solution
export function findBall(grid: number[][]): number[] {
const [n, m] = [grid.length, grid[0].length];
const isFinished = (y: number, x: number) => {
const direction = grid[y][x];
return x + direction < 0 || m <= x + direction || direction !== grid[y][x + direction];
};
const dfs = (x: number) => {
let cx = x;
for (let cy = 0; cy < n; cy++) {
if (isFinished(cy, cx)) return -1;
cx += grid[cy][cx];
}
return cx;
};
const answer = new Array(m).fill(undefined).map((_, i) => dfs(i));
return answer;
}