提问人:Tanmay Gupta 提问时间:7/13/2023 最后编辑:RobTanmay Gupta 更新时间:7/13/2023 访问量:12
每个元素都应该遍历,但显然不是
Every element should be traversed but apparently not
问:
这部分应该遍历所有内容,但我没有弄错
class Solution
{
public boolean isValidSudoku(char[][] board)
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(board[i][j]!='.')
{
if(!isValid(board,i,j,board[i][j]))
return false;
}
}
}
return true;
}
static boolean isValid(char[][] board,int row,int col,char ch)
{
//row
for (int i = 0; i < 9; i++)
{
if (board[i][col] == ch)
{
return false;
}
}
//col
for (int i = 0; i < 9; i++)
{
if (board[row][i] == ch)
{
return false;
}
}
// 3x3 Grid
int r = (row/3)*3;
int c = (col/3)*3;
for (int i = r; i < r+3; i++)
{
for (int j = c; j < c+3; j++)
{
if (board[i][j] == ch)
{
return false;
}
}
}
return true;
}
}ere
我做过类似的问题,但是通过回溯,它正在工作,尽管我更容易做到这一点
我以为每个元素都在被遍历,但显然没有,请帮忙。
答:
0赞
Tim Roberts
7/13/2023
#1
我很确定你有一个 ==/!= 混淆。在这里,我将其重命名为“makeValidMove”。如果要进行有效的移动,则执行该移动并返回 false。否则,它将返回 true。isValidSudoku
class Solution
{
public boolean makeValidMove(char[][] board)
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(board[i][j]=='.')
{
for( char n='1'; n<='9'; n++ )
{
if(isValid(board,i,j,n))
{
// Make this move.
board[i][j] = n;
return false;
}
}
// There are no valid moves for this cell.
}
}
}
return true;
}
...
评论
isValid
'.'
isValid