Day 19
題目描述
思路
其實還挺簡單的,主要的難點在于如何判斷每個小數獨是否滿足要求
詳細見代碼
class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set= new HashSet<>();//處理行HashSet<Character> set1= new HashSet<>();//處理左邊第一個小數獨HashSet<Character> set2= new HashSet<>();//處理左邊第二個小數獨HashSet<Character> set3= new HashSet<>();//處理左邊第三個小數獨HashSet<Character> set4= new HashSet<>();//處理列for(int i=0;i<9;i++){//行set.clear();//每次換行,清空setif(i==0||i==3||i==6){//由于小數獨不好處理,可以發現0 3 6分別為三行小數獨的起始行set1.clear();set2.clear();set3.clear();}set4.clear();//列set清空for(int j=0;j<9;j++){if(board[i][j]!='.'){if(set.contains(board[i][j])){//行如果存在重復return false;}else{//行不存在重復,加入setset.add(board[i][j]);}if(j<3){//第一個數獨if(set1.contains(board[i][j])){return false;}set1.add(board[i][j]);}if(3<=j&&j<6){//第二個數獨if(set2.contains(board[i][j])){return false;}set2.add(board[i][j]);}if(6<=j){//第三個數獨if(set3.contains(board[i][j])){return false;}set3.add(board[i][j]);}}if(board[j][i]!='.'){//列if(set4.contains(board[j][i])){return false;}set4.add(board[j][i]);} }}return true;}
}