90 lines
2.6 KiB
Java
90 lines
2.6 KiB
Java
|
package com.zerroi.leetcode.Three16;
|
||
|
|
||
|
import java.util.HashMap;
|
||
|
import java.util.HashSet;
|
||
|
import java.util.Map;
|
||
|
import java.util.Set;
|
||
|
|
||
|
public class IsValidSudoku {
|
||
|
public static void main(String[] args) {
|
||
|
System.out.println(5 / 3);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class SolutionFirst {
|
||
|
public boolean isValidSudoku(char[][] board) {
|
||
|
Set<Character> set = new HashSet<>();
|
||
|
for (int i = 0; i < 9; i++) {
|
||
|
for (int j = 0; j < 9; j++) {
|
||
|
char c = board[i][j];
|
||
|
if (c != '.'&& set.contains(c)) return false;
|
||
|
set.add(c);
|
||
|
}
|
||
|
set.clear();
|
||
|
}
|
||
|
|
||
|
Set<Character> setRow = new HashSet<>();
|
||
|
for (int i = 0; i < 9; i++) {
|
||
|
for (int j = 0; j < 9; j++) {
|
||
|
char c = board[j][i];
|
||
|
if (c != '.' && setRow.contains(c)) return false;
|
||
|
setRow.add(c);
|
||
|
}
|
||
|
setRow.clear();
|
||
|
}
|
||
|
|
||
|
Set<Character> setBlock = new HashSet<>();
|
||
|
for (int i = 0; i < 9; i++) {
|
||
|
int m = i / 3;
|
||
|
int n = i % 3;
|
||
|
setBlock.clear();
|
||
|
for (int k = m * 3; k < m * 3 + 3; k++) {
|
||
|
for (int j = n * 3; j < n * 3 + 3; j++) {
|
||
|
char c = board[k][j];
|
||
|
if (c != '.' && setBlock.contains(c)) return false;
|
||
|
setBlock.add(c);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
public boolean isValidSudoku2(char[][] board) {
|
||
|
Set<Character> set = new HashSet<>();
|
||
|
Map<Character, Integer> map = new HashMap<>();
|
||
|
for (int i = 0; i < 9; i++) {
|
||
|
for (int j = 0; j < 9; j++) {
|
||
|
char c = board[i][j];
|
||
|
if (c != '.'&& set.contains(c)) return false;
|
||
|
map.put(c, 1);
|
||
|
}
|
||
|
set.clear();
|
||
|
}
|
||
|
|
||
|
Set<Character> setRow = new HashSet<>();
|
||
|
for (int i = 0; i < 9; i++) {
|
||
|
for (int j = 0; j < 9; j++) {
|
||
|
char c = board[j][i];
|
||
|
if (c != '.' && setRow.contains(c)) return false;
|
||
|
setRow.add(c);
|
||
|
}
|
||
|
setRow.clear();
|
||
|
}
|
||
|
|
||
|
Set<Character> setBlock = new HashSet<>();
|
||
|
for (int i = 0; i < 9; i++) {
|
||
|
int m = i / 3;
|
||
|
int n = i % 3;
|
||
|
setBlock.clear();
|
||
|
for (int k = m * 3; k < m * 3 + 3; k++) {
|
||
|
for (int j = n * 3; j < n * 3 + 3; j++) {
|
||
|
char c = board[k][j];
|
||
|
if (c != '.' && setBlock.contains(c)) return false;
|
||
|
setBlock.add(c);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
}
|