-
Notifications
You must be signed in to change notification settings - Fork 0
/
ValidSudoku36.java
113 lines (102 loc) · 3.36 KB
/
ValidSudoku36.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// two methods for this question
//https://leetcode.com/problems/valid-sudoku/
// 36: 每一行、每列、每个3*3的方块中包含1-9不重复的数据,返回true。
import java.util.HashSet;
public class ValidSudoku36 {
public void ValidSudoku36() { };
public boolean isValidSudoku(char[][] board) {
for (int i = 0; i < 9; i++){
HashSet<Character> rows = new HashSet<Character>();
HashSet<Character> cols = new HashSet<Character>();
HashSet<Character> cube = new HashSet<Character>();
for(int j = 0; j < 9; j++){
//1-9 .
if(board[i][j] != '.' && !rows.add(board[i][j])){
return false;
}
if(board[i][j] != '.' && !cols.add(board[i][j])){
return false;
}
int rowIdx = 3*(i/3);
int colIdx = 3*(j%3);
if(board[rowIdx + j/3][colIdx + j%3] != '.' && !cube.add(board[rowIdx + j/3][colIdx + j%3])){
return false;
}
}
}
return true;
}
public static void main(String[] args){
long startTimestamp = System.currentTimeMillis();
char[][] board = new char[][]{
{'5', '3', '.', '.', '7', '.', '.', '.', '.'},
{'6', '.', '.', '1', '9', '5', '.', '.', '.'},
{'.', '9', '8', '.', '.', '.', '.', '6', '.'},
{'8', '.', '.', '.', '6', '.', '.', '.', '3'},
{'4', '.', '.', '8', '.', '3', '.', '.', '1'},
{'7', '.', '.', '.', '2', '.', '.', '.', '6'},
{'.', '6', '.', '.', '.', '.', '2', '8', '.'},
{'.', '.', '.', '4', '1', '9', '.', '.', '5'},
{'.', '.', '.', '.', '8', '.', '.', '7', '9'}
};
ValidSudoku36 obj = new ValidSudoku36();
System.out.print(obj.isValidSudoku(board));
long endTimestamp = System.currentTimeMillis();
long time = endTimestamp - startTimestamp;
System.out.print(time);
}
}
//优化
//import java.util.HashSet;
//
//public class ValidSudoku36 {
// public void ValidSudoku36() { };
//
// public boolean isValidSudoku(char[][] board) {
// HashSet<Character> rows = new HashSet<Character>();
// HashSet<Character> cols = new HashSet<Character>();
// HashSet<Character> cube = new HashSet<Character>();
//
// for (int i = 0; i < 9; i++){
// for(int j = 0; j < 9; j++){
// //1-9 .
// if(board[i][j] != '.' && !rows.add(board[i][j])){
// return false;
// }
// if(board[i][j] != '.' && !cols.add(board[i][j])){
// return false;
// }
// int rowIdx = 3*(i/3);
// int colIdx = 3*(j%3);
// if(board[rowIdx + j/3][colIdx + j%3] != '.' && !cube.add(board[rowIdx + j/3][colIdx + j%3])){
// return false;
// }
// }
// rows.clear();
// cols.clear();
// cube.clear();
// }
// return true;
// }
//
// public static void main(String[] args){
// long startTimestamp = System.currentTimeMillis();
// char[][] board = new char[][]{
// {'5', '3', '.', '.', '7', '.', '.', '.', '.'},
// {'6', '.', '.', '1', '9', '5', '.', '.', '.'},
// {'.', '9', '8', '.', '.', '.', '.', '6', '.'},
// {'8', '.', '.', '.', '6', '.', '.', '.', '3'},
// {'4', '.', '.', '8', '.', '3', '.', '.', '1'},
// {'7', '.', '.', '.', '2', '.', '.', '.', '6'},
// {'.', '6', '.', '.', '.', '.', '2', '8', '.'},
// {'.', '.', '.', '4', '1', '9', '.', '.', '5'},
// {'.', '.', '.', '.', '8', '.', '.', '7', '9'}
// };
// ValidSudoku36 obj = new ValidSudoku36();
// System.out.print(obj.isValidSudoku(board));
// long endTimestamp = System.currentTimeMillis();
// long time = endTimestamp - startTimestamp;
// System.out.print(time);
//
// }
//}