我用Javascript写了一个数独解算器,用于解决以下问题 https:/leetcode.comproblemssudoku-solversolution. 每当我在leetcode以外的IDE中使用同样的代码时,它都能很好地解决数独棋盘的问题,但当我在leetcode中提交它作为答案时,它总是返回一个在函数中传递的默认棋盘参数。然而,当我在leetcode中提交它作为答案时,它总是返回一个传递给函数的默认板参数。谁能找出原因?
注:leetcode问题中说要原地解板,不要返回任何东西。
错误:imgur.coma63v7sOu
/**
* @param {character[][]} board
* @return {void} Do not return anything, modify board in-place instead.
*/
var solveSudoku = function(board) {
function check(y, x, n, board){
// Search column for n
for (let i = 0; i < 9; i++){
if (board[y][i] == n) return false;
}
// Search row for n
for (let i = 0; i < 9; i++){
if (board[i][x] == n) return false;
}
const row = Math.floor(x / 3) * 3;
const col = Math.floor(y / 3) * 3;
for (let i = 0; i < 3; i++){
for (let j = 0; j < 3; j++){
if (board[col+i][row+j] == n) return false;
}
}
return true;
}
function solve(board){
for (let y = 0; y < 9; y++){
for (let x = 0; x < 9; x++){
if (board[y][x] === "."){
for (let n = 1; n < 10; n++){
if(check(y, x, n, board)){
board[y][x] = n.toString();
solve(board);
board[y][x] = ".";
}
}
return;
}
}
}
}
solve(board)
}
solveSudoku
并没有做任何事情,它只定义了两个函数。呼叫 solve(board)
在功能体中。