LeetCode Online Judge 题目C# 练习 - 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 '.'.

 1         public static bool ValidSudoku(List<List<char>> board)

 2         {

 3             for (int i = 0; i < board.Count; i++)

 4             {

 5                 for (int j = 0; j < board[0].Count; j++)

 6                 {

 7                     if (board[i][j] != '.')

 8                         if (!isValid(board, i, j))

 9                             return false;

10                 }

11             }

12 

13         public static bool isValid(List<List<char>> board, int r, int c)

14         {

15             //////////////CHECK ROW/////////////////////

16             bool[] Row = new bool[9];

17             for (int i = 0; i < 9; i++)

18             {

19                 if (board[r][i] >= '1' && board[r][i] <= '9')

20                 {

21                     if (Row[board[r][i] - '1'] == false)

22                         Row[board[r][i] - '1'] = true;

23                     else

24                         return false;

25                 }

26             }

27 

28             /////////////CHECK COLUMN//////////////////

29             bool[] Col = new bool[9];

30             for (int i = 0; i < 9; i++)

31             {

32                 if (board[i][c] >= '1' && board[i][c] <= '9')

33                 {

34                     if (Col[board[i][c] - '1'] == false)

35                         Col[board[i][c] - '1'] = true;

36                     else

37                         return false;

38                 }

39             }

40 

41             /////////////CHECK GRID///////////////////

42             bool[] Grid = new bool[9];

43             // r / 3 * 3 = beginning row number of that grid

44             // c / 3 * 3 = beginning column number of that grid

45             for (int i = (r / 3) * 3; i < (r / 3) * 3 + 3; i++)

46             {

47                 for (int j = (c / 3) * 3; j < (c / 3) * 3 + 3; j++)

48                 {

49                     if (board[i][j] >= '1' && board[i][j] <= '9')

50                     {

51                         if (Grid[board[i][j] - '1'] == false)

52                             Grid[board[i][j] - '1'] = true;

53                         else

54                             return false;

55                     }

56                 }

57             }

58 

59             return true;

60         }

61            

代码分析:

  不就是前面一题的helper function吗?

你可能感兴趣的:(LeetCode)