36. 有效的数独 - LeetCode

36. 有效的数独

题目链接

直接模拟

class Solution {
    public boolean isValidSudoku(char[][] board) {
        for(int i = 0; i < 9; i++){
            boolean[] marked = new boolean[9];
            for(int j = 0; j < 9; j++){
                char c = board[i][j];
                if(c == '.') continue;
                int index = c - '1';
                if(marked[index]) return false;
                marked[index] = true;
            }
        }
        for(int i = 0; i < 9; i++){
            boolean[] marked = new boolean[9];
            for(int j = 0; j < 9; j++){
                char c = board[j][i];
                if(c == '.') continue;
                int index = c - '1';
                if(marked[index]) return false;
                marked[index] = true;
            }
        }
        for(int i = 0; i < 9; i++){
            boolean[] marked = new boolean[9];
            for(int j = 0; j < 9; j++){
                char c = board[i/3*3+j/3][i%3*3+j%3];
                if(c == '.') continue;
                int index = c - '1';
                if(marked[index]) return false;
                marked[index] = true;
            }
        }
        return true;
    }
}
  • 也可以放在一次循环中,但并不会更快,也不会节约空间,反而代码更难懂
上一篇:SQL SERVER四舍五入你除了用ROUND还有其他方法吗?


下一篇:第四章 图(二) - 《算法》读书笔记