boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - leetcode Valid Sudoku 就是通不过
相关主题
求教Valid Sudoku
求教一个题目,sudoku 下面代码哪里错了。。。
leetcode 一道题 valid palindrome
[难题求助] leetcode wordsearch
看似很简单的一个BST问题但就是错了!
攒人品!发面经
问个面试题
sodoku solver 怎么做?
Sudoku
[discussion] how to approve that the given 9*9 is a sudoku
相关话题的讨论汇总
话题: cube话题: int话题: false话题: return话题: check
进入JobHunting版参与讨论
1 (共1页)
m**********n
发帖数: 97
1
Valid Sudoku,不是Sudoku solver,只需要检测三条rules就可以了,这是我的代码
public class Solution {
public boolean isValidSudoku(char[][] board) {

int m = board.length;
int n = board[0].length;
if(m != 9 || n != 9) return false;

char[] cube = new char[9];
// check row rule
for(int i = 0; i < m; i++)
{
cube = board[i];
if(!check(cube)) return false;
}
//check column rule
for(int j = 0; j < n; j++)
{
for(int i = 0; i < m; i++)
{
cube[i] = board[i][j];
}
if(!check(cube)) return false;
}
//check each subbox
for(int k = 0; k < 3; k++)
{
for(int h = 0; h < 3; h++)
{
for(int i = 0; i < 9; i++)
{
int row = i/3;
int col = i%3;
cube[i] = board[k*3 + row][h*3 + col];
}
if(!check(cube)) return false;
}
}

return true;

}

public boolean check(char[] cube)
{
int[] visited = new int[9];
for(int i = 0; i < 9; i++)
{
if(cube[i] != '.')
{
int digit = Character.getNumericValue(cube[i]);
if(digit == -1) return false;
if(visited[digit-1] == 1) return false;
visited[digit-1] = 1;
}
}
return true;
}
}
Input: [".87654321","2........","3........","4........","5........","6...
.....","7........","8........","9........"]
Output: false
Expected: true
我在eclipse上跑了一下,发现在是在检查each subbox出的错,感觉像是得到的cube不
正确,可是我看了代码好几遍,都觉得是正确的啊。。。。求大牛给个指导意见~~~谢谢
1 (共1页)
进入JobHunting版参与讨论
相关主题
[discussion] how to approve that the given 9*9 is a sudoku
java没有指针真麻烦
问个空间复杂度问题
怎么判断一个数的二进制是不是回文数
新鲜Amazon面经(附参考答案) 顺便求各种大公司refer
贡献今天facebook电面 一道题
写一个function判断一个数是不是2的整数次方
Leetcode Timeout
facebook的面试题
弱问一道G题
相关话题的讨论汇总
话题: cube话题: int话题: false话题: return话题: check