36 有效數獨

2022-07-02 11:24:11 字數 779 閱讀 8644

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。

數字 1-9 在每一行只能出現一次。

數字 1-9 在每一列只能出現一次。

數字 1-9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。

對於每乙個遍歷到的當前元素,需要知道該元素是否之前已在該行,該列,該小方陣裡出現過,那麼就用乙個資料結構來儲存這些資訊。可以定義三個9*9矩陣rowflag,colflag,cellflag。rowflag[i][k]表示第i行是否出現了數字k+1,colflag[j][k]表示第j列是否出現了數字k+1,cellflag[l][k]表示第l個小方陣是否出現了數字k+1。

class solution 

return true;}}

簡化儲存資訊的資料結構,方法一用了3個矩陣來儲存這些資訊,這裡只用乙個資料結構儲存所有資訊。這個資料結構同時儲存了該行,該列和該小方陣是否之前就出現過當前數字。

將數字放在乙個括號中,每行上的數字就將行號放在括號左邊,每列上的數字就將列數放在括號右邊,每個小區間內的數字就將在小區間內的行列數分別放在括號的左右兩邊,這樣每個數字的狀態都是獨一無二的存在,就可以在 hashset 中快速地查詢是否有重複元素存在。

class solution 

return true;}}

參考:

36 有效的數獨

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。示...

36 有效的數獨

判斷乙個9x9的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。數字1 9在每一行只能出現一次。數字1 9在每一列只能出現一次。數字1 9在每乙個以粗實線分隔的3x3宮內只能出現一次。上圖是乙個部分填充的有效的數獨。數獨部分空格內已填入了數字,空白格用 表示。輸入 5 3 7 6 ...

36 有效的數獨

判斷乙個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可 數字1 9在每一行只能出現一次。數字1 9在每一列只能出現一次。數字1 9在每乙個以粗實線分隔的3x3宮內只能出現一次 數獨部分空格內已填入了數字,空白格用 表示。方法一 一遍遍歷 思路 時間複雜度o 1 空間複雜...