地址
https://leetcode-cn.com/problems/valid-sudoku/submissions/
描述
代码
y总的代码
class Solution {
public:bool isValidSudoku(vector<vector<char>>& b) {
bool stu[9];//数字 1-9 在每一行只能出现一次。for(int i=0;i<9;i++){
memset(stu,0,sizeof stu);for(int j=0;j<9;j++){
if(b[i][j]!='.'){
int t=b[i][j]-'1';if(stu[t]) return false;else stu[t]= true;}}}//数字 1-9 在每一列只能出现一次。for(int i=0;i<9;i++){
memset(stu,0,sizeof stu);for(int j=0;j<9;j++){
if(b[j][i]!='.'){
int t=b[j][i]-'1';if(stu[t]) return false;else stu[t]= true;}}}//数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次for(int i=0;i<9;i+=3){
for(int j=0;j<9;j+=3){
memset(stu,0,sizeof stu);//对于每个3*3矩阵分析for(int x=0;x<3;x++){
for(int y=0;y<3;y++){
if(b[i+x][j+y]!='.'){
int t=b[i+x][j+y]-'1';if(stu[t]) return false;else stu[t]=true;}}}}}return true;}
};
我自己写的C++
class Solution {
public:bool isValidSudoku(vector<vector<char>>& board) {
//每数字 1-9 在每一行只能出现一次。unordered_map<char,int> num;for(int i=0;i<board.size();i++){
for(int j=0;j<board[0].size();j++){
if(board[i][j]=='.') continue;if(num[board[i][j]]>0) return false;else num[board[i][j]]++;}//每次执行完毕都要清0num.clear();}num.clear();//清空数组//数字 1-9 在每一列只能出现一次。for(int i=0;i<board[0].size();i++){
for(int j=0;j<board.size();j++){
if(board[j][i]=='.') continue;if(num[board[j][i]]>0) return false;else num[board[j][i]]++;}num.clear();}//数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。for(int n=0;n<9;n++){
for(int i=(n%3)*3;i<(n%3+1)*3;i++){
for(int j=(n/3)*3;j<(n/3+1)*3;j++){
if(board[i][j]=='.') continue;if(num[board[i][j]]>0) return false;else num[board[i][j]]++;}}num.clear();}return true;}
};
Java
class Solution {
public boolean isValidSudoku(char[][] b) {
int n=9;boolean [] st=new boolean[10];for(int i=0;i<n;i++){
Arrays.fill(st,false);for(int j=0;j<n;j++){
if(b[i][j]!='.'){
int t=b[i][j]-'0';if(st[t]) return false ;else {
st[t]=true;}}}}for(int i=0;i<n;i++){
Arrays.fill(st,false);for(int j=0;j<n;j++){
if(b[j][i]!='.'){
int t=b[j][i]-'0';if(st[t]) return false ;else {
st[t]=true;}}}}for(int i=0;i<n;i+=3){
for(int j=0;j<n;j+=3){
Arrays.fill(st,false);for(int u=0;u<3;u++){
for(int v=0;v<3;v++){
if(b[i+u][j+v]!='.'){
int t=b[i+u][j+v]-'0';if(st[t]) return false;else st[t]=true;}}}}}return true;}
}