这道题纠结了好久~~最开始没看懂题目,以为整个大的九宫格中的数字也不能重复出现~~后面又纠结于js是否有map,怎样使用~~~
暂时通过的最笨的解决办法代码如下:
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function(board) {
//每一行
for(i=0;i<board.length;i++){
for(j=0;j<board[0].length;j++){
for(k=j+1;k<board[0].length;k++){
if(board[i][j]==board[i][k]){
if(board[i][j]!=".")
return false;
}
}
}
}
//每一列
for(j=0;j<board.length;j++){
for(i=0;i<board[0].length;i++){
for(k=i+1;k<board[0].length;k++){
if(board[i][j]==board[k][j]){
if(board[i][j]!=".")
return false;
}
}
}
}
//每一个九宫格
for(num=0;num<9;num++){ //对每一个九宫格
var tmp=[]; //用来存放一个九宫格中所有数字的数组
for(i=(Math.floor(num/3))*3;i<=(Math.floor(num/3))*3+2;i++)
for(j=(num%3)*3;j<=(num%3)*3+2;j++){
tmp.push(board[i][j]); //将一个九宫格里的数字放到一个一维数组中
}
for(k=0;k<tmp.length;k++){
for(n=k+1;n<tmp.length;n++)
if(tmp[k]==tmp[n] && tmp[k]!=".")
return false;
}
}
return true;
};