用暴力解法解出来的,判断3*3那要写的比较多,判断竖列那花了点功夫。
不知道有没有更好的解法。
class Solution {
public:bool isValidSudoku(vector<vector<char>>& board) {for(int i=0;i<9;i++){vector<char>c=board[i];for(int j=0;j<9;j++){if(c[j]!='.'){if(j<9){int u=j+1;while(u<9){if(c[j]==c[u]) return false;u++;}}if(i<9)for(int z=i+1;z<9;z++){vector<char>a=board[z];if(a[j]==c[j]) return false;}if((i==0||i==3||i==6)&&(j==0||j==3||j==6)){vector<char>a=board[i+1];vector<char>b=board[i+2];if(c[j]==a[j+1]||c[j]==a[j+2]||c[j]==b[j+1]||c[j]==b[j+2]) return false;}else if((i==0||i==3||i==6)&&(j==1||j==4||j==7)){vector<char>a=board[i+1];vector<char>b=board[i+2];if(c[j]==a[j+1]||c[j]==a[j-1]||c[j]==b[j+1]||c[j]==b[j-1]) return false;}else if((i==0||i==3||i==6)&&(j==2||j==5||j==8)){vector<char>a=board[i+1];vector<char>b=board[i+2];if(c[j]==a[j-1]||c[j]==a[j-2]||c[j]==b[j-1]||c[j]==b[j-2]) return false;}else if((i==1||i==4||i==7)&&(j==0||j==3||j==6)){vector<char>a=board[i+1];if(c[j]==a[j+1]||c[j]==a[j+2]) return false;}else if((i==1||i==4||i==7)&&(j==1||j==4||j==7)){vector<char>a=board[i+1];if(c[j]==a[j+1]||c[j]==a[j-1]) return false;}else if((i==1||i==4||i==7)&&(j==2||j==5||j==8)){vector<char>a=board[i+1];if(c[j]==a[j-1]||c[j]==a[j-2]) return false;}}}}return true;}
};