LeetCode-036-有效的數(shù)獨(dú)

判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可男旗。

數(shù)字 1-9 在每一行只能出現(xiàn)一次颅眶。
數(shù)字 1-9 在每一列只能出現(xiàn)一次。
數(shù)字 1-9 在每一個(gè)以粗實(shí)線分隔的 3x3 宮內(nèi)只能出現(xiàn)一次止吐。

數(shù)獨(dú)部分空格內(nèi)已填入了數(shù)字,空白格用 '.' 表示。

示例 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

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-sudoku

解題思路

HashMap 的空間消耗大, 采用布爾二維數(shù)組
boolean[][] rows = new boolean[9][9]
boolean[][] cols = new boolean[9][9]
boolean[][] boxes = new boolean[9][9]
rows[i][num - 1]代表第 i 行的數(shù) num 是否出現(xiàn)過, 是則為 true

因?yàn)閿?shù)組下標(biāo)為0到長度 - 1, 所以用 num - 1 代表num

遍歷9 * 9的數(shù)獨(dú)時(shí), 依次判斷遍歷的數(shù)字在該行該列該九宮格是否出現(xiàn)過, 出現(xiàn)過立刻返回 false, 沒出現(xiàn)過則設(shè)為出現(xiàn)過 true
遍歷完之前沒返回結(jié)果則說明符合有效數(shù)獨(dú)

代碼

class Solution {
    public boolean isValidSudoku(char[][] board) {
        boolean[][] rows = new boolean[9][9];
        boolean[][] cols = new boolean[9][9];
        boolean[][] boxes = new boolean[9][9];
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                char numChar = board[i][j];
                if (numChar != '.') {
                    int num = numChar - '0';
                    if (rows[i][num - 1]) {
                        return false;
                    } else {
                        rows[i][num - 1] = true;
                    }
                    if (cols[j][num - 1]) {
                        return false;
                    } else {
                        cols[j][num - 1] = true;
                    }
                    if (boxes[i / 3 * 3 + j / 3][num - 1]) {
                        return false;
                    } else {
                        boxes[i / 3 * 3 + j / 3][num - 1] = true;
                    }
                }
            }
        }
        return true;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末婿崭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肴颊,更是在濱河造成了極大的恐慌氓栈,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婿着,死亡現(xiàn)場(chǎng)離奇詭異颤绕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祟身,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門奥务,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袜硫,你說我怎么就攤上這事氯葬。” “怎么了婉陷?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵帚称,是天一觀的道長官研。 經(jīng)常有香客問我,道長闯睹,這世上最難降的妖魔是什么戏羽? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮楼吃,結(jié)果婚禮上始花,老公的妹妹穿的比我還像新娘。我一直安慰自己孩锡,他們只是感情好酷宵,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著躬窜,像睡著了一般浇垦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荣挨,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天男韧,我揣著相機(jī)與錄音,去河邊找鬼默垄。 笑死煌抒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厕倍。 我是一名探鬼主播寡壮,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼讹弯!你這毒婦竟也來了况既?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤组民,失蹤者是張志新(化名)和其女友劉穎棒仍,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臭胜,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莫其,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耸三。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乱陡。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖仪壮,靈堂內(nèi)的尸體忽然破棺而出憨颠,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布爽彤,位于F島的核電站养盗,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏适篙。R本人自食惡果不足惜往核,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嚷节。 院中可真熱鬧聂儒,春花似錦、人聲如沸丹喻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碍论。三九已至,卻和暖如春柄慰,著一層夾襖步出監(jiān)牢的瞬間鳍悠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工坐搔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藏研,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓概行,卻偏偏與公主長得像蠢挡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凳忙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容