export function isValidSudoku(board: string[][]): boolean { const N = board.length; const rows = new Set(); const colls = new Set(); const cells = new Set(); for (let i = 0; i < N; i++) { for (let j = 0; j < N; j++) { const val = board[i][j]; if (val === ".") continue; const cellIndex = Math.floor(i / 3) * 3 + Math.floor(j / 3); const rowKey = i + "_" + val; const collKey = j + "_" + val; const cellKey = cellIndex + "_" + val; if (rows.has(rowKey) || colls.has(collKey) || cells.has(cellKey)) return false; rows.add(rowKey); colls.add(collKey); cells.add(cellKey); } } return true };