码迷,mamicode.com
首页 > 其他好文 > 详细

Valid Sudoku leetcode

时间:2015-12-27 22:01:01      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:

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.

判断九宫格的合理性(并不一定有解),只需要依次判断行、列、9个子九宫格是否合理即可!

我的思维非常常规,代码效率比较慢,如下:

 

 1 class Solution {
 2 public:
 3     bool isValidSudoku(vector<vector<char>>& board) {
 4         map<char,int> mark;
 5         for(int i=0;i<9;i++)
 6         {
 7             mark.clear();
 8             for(int j=0;j<9;j++)//行是否合理
 9             {
10                mark[board[i][j]]++;
11                if(board[i][j]!=.&&mark[board[i][j]]>1)
12                     return false;
13             }
14             mark.clear();
15             for(int j=0;j<9;j++)//列是否合理
16             {
17                 mark[board[j][i]]++;
18                 if(board[j][i]!=.&&mark[board[j][i]]>1)
19                     return false;
20             }
21         }
22         for(int i=0;i<3;i++)//检查9个子九宫格,控制行.每次3行(或者3列),我选择行或者说从上往下共3排,一次一排
23         {
24             mark.clear();
25             for(int j=3*i;j<3*i+3;j++)//第一列
26             for(int k=0;k<3;k++)
27             {
28                 mark[board[j][k]]++;
29                 if(board[j][k]!=.&&mark[board[j][k]]>1)
30                     return false;
31             }
32             mark.clear();
33             for(int j=3*i;j<3*i+3;j++)//第二列
34             for(int k=3;k<6;k++)
35             {
36                 mark[board[j][k]]++;
37                 if(board[j][k]!=.&&mark[board[j][k]]>1)
38                     return false;
39             } 
40             mark.clear();
41             for(int j=3*i;j<3*i+3;j++)//第三列
42             for(int k=6;k<9;k++)
43             {
44                 mark[board[j][k]]++;
45                 if(board[j][k]!=.&&mark[board[j][k]]>1)
46                     return false;
47             }  
48         }
49         return true;
50     }
51 };

 

Valid Sudoku leetcode

标签:

原文地址:http://www.cnblogs.com/chess/p/5080842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!