Posts Tagged 【math】Valid Sudoku

来源:互联网 发布:重庆时时彩源码 编辑:程序博客网 时间:2024/06/12 07:48

Valid Sudoku

 Total Accepted: 33528 Total Submissions: 122751My Submissions

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.

/*这道题目就是让你看看当前状态的是否符合Sudoku就是每一行,每一列,每一个方块的看而不是确认是否有解*/public class Solution {    public boolean isValidSudoku(char[][] board) {        int[] row = new int[9];        int[] column = new int[9];        boolean flag = false;        //row && cloumn        for(int i = 0;i<9;i++) {            for(int k = 0;k<9;k++) {                row[k] = 0;                column[k] = 0;            }            for(int j = 0;j<9;j++) {                if(board[i][j] != '.') {                   if(row[board[i][j]-'1']>0) return false;                   else {                       row[board[i][j]-'1']++;                   }                }                if(board[j][i] != '.') {                   if(column[board[j][i]-'1']>0) return false;                   else {                       column[board[j][i]-'1']++;                   }                }            }                  }        //block        for(int i = 0;i<9;i = i+3)            for(int j = 0;j<9;j = j + 3) {                for(int k = 0;k<9;k++)                    row[k] = 0;                for(int m = 0;m<3;m++)                    for(int n = 0;n<3;n++) {                        if(board[i+m][j+n] != '.') {                           if(row[board[i+m][j+n]-'1']>0) return false;                           else {                               row[board[i+m][j+n]-'1']++;                            }                         }                    }            }        //        return true;    }}

/*将block放在一个行列循环中block[i][j]表示第i个(从左至右从上至下)方块中的元素j*/public class Solution {    public boolean isValidSudoku(char[][] board) {        int[] row = new int[9];        int[] column = new int[9];        int[][] block = new int[9][9];        boolean flag = false;        for(int i = 0;i<9;i++) {            for(int k = 0;k<9;k++) {                row[k] = 0;                column[k] = 0;            }            for(int j = 0;j<9;j++) {                //cloumn                if(board[i][j] != '.') {                   if(row[board[i][j]-'1']>0) return false;                   else {                       row[board[i][j]-'1']++;                   }                }                //cloumn                if(board[j][i] != '.') {                   if(column[board[j][i]-'1']>0) return false;                   else {                       column[board[j][i]-'1']++;                   }                }                //block[i][j]表示第i个(从左至右从上至下)方块中的元素j                if(board[i][j] != '.') {                   if(block[i/3*3+j/3][board[i][j]-'1']>0) return false;                   else {                       block[i/3*3+j/3][board[i][j]-'1']++;                   }                }            }                  }        //        return true;    }}



Have you met this question in a real interview? 
Yes
0 0
原创粉丝点击