Leetcode 有效的数独

一颗蔬菜 2019-09-03 PM 59℃ 0条

Leetcode 有效的数独

原题链接

这道题用Map和Set都能实现,个人认为用Set处理起来更简单而且更快。因为用Map需要考虑key值,代码更冗长,key值的插入也是需要时间的。我最初的写法就是用Map,但是写到九宫格的时候发现key值表达起来很麻烦。

class Solution {
    public boolean isValidSudoku(char[][] board) {
        for (int i = 0; i < 9; i ++) {
            HashSet<Character> rowSet = new HashSet<>();
            HashSet<Character> colSet = new HashSet<>();
            HashSet<Character> cubeSet = new HashSet<>();
            for (int j = 0; j < 9; j ++) {
                if (board[i][j] != '.' && !rowSet.add(board[i][j])) {
                    return false;
                }
                if (board[j][i] != '.' && !colSet.add(board[j][i])) {
                    return false;
                }
                int row = 3 * (i / 3) + j / 3;
                int col = 3 * (i % 3) + j % 3;
                if (board[row][col] != '.' && !cubeSet.add(board[row][col])) {
                    return false;
                }
            }
        } 
        return true;
    }
}

Snipaste_2019-09-03_20-57-47.png

标签: 算法

非特殊说明,本博所有文章均为博主原创。