ACM题库~

LeetCode 36. Valid Sudoku

2017-09-14  本文已影响19人  关玮琳linSir

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;  
    }  
上一篇 下一篇

猜你喜欢

热点阅读