leetcode_Valid Sudoku

来源:互联网 发布:java ee8 编辑:程序博客网 时间:2024/05/19 18:11

描述:

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.

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

思路:

和一圈又一圈由外而内打印数字一样,考察的也就是程序的执行流程和边界值的把握。而这一题就更简单,由题意可知,本题考查的是每行每列和9个板块之间是不是都符合要求,和八皇后有点像,但要简单的多。

代码:

public class Solution {    public boolean isValidSudoku(char[][] board) {        BitSet set=new BitSet();        int i,j,m,k,index_i,index_j;        int num=0;        //to evaluate if the 9 blocks are OK        for( i=0;i<board.length;i+=3)        {            for( j=0;j<board[0].length;j+=3)            {                set.clear();                index_i=i+3;                index_j=j+3;                for( m=i;m<index_i;m++)                {                    for( k=j;k<index_j;k++)                    {                        if(board[m][k]!='.')                        {                            num=board[m][k]-'0';                            if(!set.get(num))                                set.set(num);                            else                                return false;                        }                    }                }            }        }        //to evaluate the rows        for(i=0;i<board.length;i++)        {            set.clear();            for(j=0;j<board[0].length;j++)            {                if(board[i][j]!='.')                {                    num=board[i][j]-'0';                     if(!set.get(num))                        set.set(num);                    else                        return false;                }                            }        }        //to evalueate the colums        for(j=0;j<board[0].length;j++)        {            set.clear();            for( i=0;i<board.length;i++)            {                if(board[i][j]!='.')                {                    num=board[i][j]-'0';                    if(!set.get(num))                     set.set(num);                    else                     return false;                }            }        }        return true;    }}


0 0
原创粉丝点击