36. Valid Sudoku

JJ·2021년 1월 3일
0

Algorithms

목록 보기
45/114
class Solution {
    public boolean isValidSudoku(char[][] board) {
        HashSet<Integer> [] rows = new HashSet[9];
        HashSet<Integer> [] cols = new HashSet[9];
        HashSet<Integer> [] one = new HashSet[9];
        for (int n = 0; n < 9; n++) {
            rows[n] = new HashSet<Integer>();
            cols[n] = new HashSet<Integer>();
            one[n] = new HashSet<Integer>();
        }
        
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                char val = board[i][j];
                if (val != '.') {
                    int v = (int)val;
                    int xy = (i / 3) * 3 + j / 3;
                    
                    if ((!rows[i].add(v)) || !cols[j].add(v) || !one[xy].add(v)) {
                        return false;
                    } 
                }
            }
        }
        return true;
    }
}

Runtime: 2 ms, faster than 84.31% of Java online submissions for Valid Sudoku.
Memory Usage: 38.8 MB, less than 88.24% of Java online submissions for Valid Sudoku.

오랜만에 꽤 쉬웠던 문제..^^..

0개의 댓글