每日刷題 有效的數獨

2021-09-27 03:03:08 字數 1394 閱讀 2130

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

示例:

例 1:

輸入:[[「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」]]

輸出: true

例 2:

輸入:[[「8」,「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」]

]輸出: false

解釋: 位於左上角的 3x3 宮內有兩個 8 存在, 因此這個數獨是無效的。

這道題難度並不高,認真讀題很重要:檢測已經填入數獨內的陣列是否有效。

我們將 9 個「宮」按照以下標記劃分:

設定三個雜湊表,line, column, block, 分別代表 行、列、宮中已經存在的元素,若三者中任何乙個元素出現的次數超過兩次,則不滿足條件,返回 false.

遍歷陣列,對於每乙個非空元素 t = nums[i][j] - 『0』 (即 nums[i][j] != 『.』), 分別將其放到 line[i][t], column[j][t], block[ i / 3 + j / 3 * 3][t] 中,之後用上述方法檢查即可。

**:

class

solution

return

true;}

};

leetcode刷題(陣列)14 有效的數獨

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

每日刷題 有效數字

驗證給定的字串是否可以解釋為十進位制數字。說明 我們有意將問題陳述地比較模糊。在實現 之前,你應當事先思考所有可能的情況。這裡給出乙份可能存在於有效十進位制數字中的字元列表 數字 0 9 指數 e 正 負號 小數點 當然,在輸入中,這些字元的上下文也很重要。方法一 直接法 依據題目的要求,對字串進行...

刷題 搜尋 新數獨

很暴力的搜尋,還沒有什麼剪枝.心得 如果只查詢和修改,用bool比bitset快 rnt在迴圈中會比int快 減少簡單的函式呼叫 include include include include define rnt register int using namespace std int ans 1...