LeetCode 36. Valid Sudoku

Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character '.'

A partially filled sudoku which is valid.

题意:判断这个数独是不是一个合法的数据,也就是说,一行,一列,还有一块,都只能是从1-9不能重复。

Note:
A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.

public boolean isValidSudoku(char[][] board) {  
        List<Set<Character>> rl = new ArrayList<Set<Character>>();  
        List<Set<Character>> cl = new ArrayList<Set<Character>>();  
        List<Set<Character>> sl = new ArrayList<Set<Character>>();  
          
        for(int i=0; i<9; i++) {  
            rl.add(new HashSet<Character>());  
            cl.add(new HashSet<Character>());  
            sl.add(new HashSet<Character>());  
        }  
        int n = board.length;  
        for(int i=0; i<n; i++) {  
            for(int j=0; j<n; j++) {  
                char c = board[i][j];  
                if(c=='.') continue;  
                else if(rl.get(i).contains(c) || cl.get(j).contains(c) || sl.get(i/3*3 + j/3).contains(c)) return false;  
                else {  
                    rl.get(i).add(c);  
                    cl.get(j).add(c);  
                    sl.get(i/3*3+j/3).add(c);  
                }  
            }  
        }  
          
        return true;  
    }  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容