HZFE / algorithms-solving

1 stars 0 forks source link

2022-09-09 #42

Open github-actions[bot] opened 2 years ago

gongpeione commented 2 years ago

36 Valid Sudoku

/*
 * @lc app=leetcode id=36 lang=typescript
 *
 * [36] Valid Sudoku
 */

// @lc code=start
function isValidSudoku(board: string[][]): boolean {

};
// @lc code=end

Nickname: Geeku From vscode-hzfe-algorithms

gongpeione commented 2 years ago

36 Valid Sudoku

/*
 * @lc app=leetcode id=36 lang=typescript
 *
 * [36] Valid Sudoku
 */

// @lc code=start
function isValidSudoku(board: string[][]): boolean {
    const cols = {};
    const rows = {};
    const square = {};

    for (let r = 0; r < 9; r++) {
        for (let c = 0; c < 9; c++) {
            const target = board[r][c];

            if (target === ".") {
                continue;
            }

            if (
                (rows[r] || []).includes(target)
                || (cols[c] || []).includes(target)
                // `${~~(r / 3)},${~~(c / 3)}` point to the target 3x3 block
                || (square[`${~~(r / 3)},${~~(c / 3)}`] || []).includes(target)
            ) {
                return false;
            }

            Array.isArray(rows[r]) ? rows[r].push(target) : (rows[r] = [target]);
            Array.isArray(cols[c]) ? cols[c].push(target) : (cols[c] = [target]);
            Array.isArray(square[`${~~(r / 3)},${~~(c / 3)}`]) ? square[`${~~(r / 3)},${~~(c / 3)}`].push(target) : (square[`${~~(r / 3)},${~~(c / 3)}`] = [target]);

        }
    }

    return true;
};
// @lc code=end

Nickname: Geeku From vscode-hzfe-algorithms