Lettcode_36_Valid Sudoku
Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules.
The Sudoku board could be partially filled, where empty cells are filled with the character
'.'
. A partially filled sudoku which is valid.
Note: A valid Sudoku board (partially filled) is not necessarily solvable. Only the filled cells need to be validated.
생각:
(1)문 제 는 하나의 게임 이 효과 가 있 는 지 를 판단 하 는 것 이다.
(2)문제 의 의 미 는 우리 로 하여 금 전체 수 독(물론,정말 구 해 가 복잡 하 다 면)을 풀 게 하 는 것 이 아니 라 수 독 에 있 는 데이터 가 효과 가 있 는 지 판단 하 게 하 는 것 이다.
(3)본 고의 사고방식 은 폭력 적 으로 풀 리 는 것 이다.왜냐하면 다른 좋 은 방법 을 생각 하지 못 했 기 때문이다.수 독 에 대응 하 는 9*9 의 2 차원 배열 을 옮 겨 다 니 며''가 아 닌 숫자 에 대해 서 는 그 가 있 는 줄,열,그리고 3*3 의 블록 구역 을 판단 해 야 한다.중복 되 는 상황 이 있 으 면 수 독 은 무효 이 고 구체 적 으로 아래 코드 를 볼 수 있다.
(4)본문 이 당신 에 게 도움 이 되 기 를 바 랍 니 다.
알고리즘 코드 는 다음 과 같 습 니 다.
public boolean isValidSudoku(char[][] board) {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
char curr = board[i][j];
if(curr=='.'){
continue;
}
//
for (int k = j+1; k < board.length; k++) {
if(curr==board[i][k]){
return false;
}
}
//
for (int k = i+1; k < board.length; k++) {
if(curr==board[k][j]){
return false;
}
}
//3*3
if(i>=0&&i<3&&j>=0&&j<3){
int count=0;
for (int k1 = 0; k1 < 3; k1++) {
for (int k2 = 0; k2 < 3; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=0&&i<3&&j>=3&&j<6){
int count=0;
for (int k1 = 0; k1 < 3; k1++) {
for (int k2 = 3; k2 < 6; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=0&&i<3&&j>=6&&j<9){
int count=0;
for (int k1 = 0; k1 < 3; k1++) {
for (int k2 = 6; k2 < 9; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=3&&i<6&&j>=0&&j<3){
int count=0;
for (int k1 = 3; k1 < 6; k1++) {
for (int k2 = 0; k2 < 3; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=3&&i<6&&j>=3&&j<6){
int count=0;
for (int k1 = 3; k1 < 6; k1++) {
for (int k2 = 3; k2 < 6; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=3&&i<6&&j>=6&&j<9){
int count=0;
for (int k1 = 3; k1 < 6; k1++) {
for (int k2 = 6; k2 < 9; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=6&&i<9&&j>=0&&j<3){
int count=0;
for (int k1 = 6; k1 < 9; k1++) {
for (int k2 = 0; k2 < 3; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=6&&i<9&&j>=3&&j<6){
int count=0;
for (int k1 = 6; k1 < 9; k1++) {
for (int k2 = 3; k2 < 6; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
if(i>=6&&i<9&&j>=6&&j<9){
int count=0;
for (int k1 = 6; k1 < 9; k1++) {
for (int k2 = 6; k2 < 9; k2++) {
if(board[k1][k2]==curr){
count++;
}
if(count>1) return false;
}
}
}
}
}
return true;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.