leetcode 題號(hào)#36 有效的數(shù)獨(dú)

題目

查看題目詳情可點(diǎn)擊此處

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

  1. 數(shù)字 1-9 在每一行只能出現(xiàn)一次。
  2. 數(shù)字 1-9 在每一列只能出現(xiàn)一次家制。
  3. 數(shù)字 1-9 在每一個(gè)以粗實(shí)線分隔的 3x3 宮內(nèi)只能出現(xiàn)一次正林。
    上圖是一個(gè)部分填充的有效的數(shù)獨(dú)

    數(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

示例 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
解釋: 除了第一行的第一個(gè)數(shù)字從 5 改為 8 以外觅廓,空格內(nèi)其他數(shù)字均與 示例1 相同。
但由于位于左上角的 3x3 宮內(nèi)有兩個(gè) 8 存在, 因此這個(gè)數(shù)獨(dú)是無(wú)效的涵但。

說(shuō)明:

  • 一個(gè)有效的數(shù)獨(dú)(部分已被填充)不一定是可解的杈绸。
  • 只需要根據(jù)以上規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可贤笆。
  • 給定數(shù)獨(dú)序列只包含數(shù)字 1-9 和字符 '.' 蝇棉。
  • 給定數(shù)獨(dú)永遠(yuǎn)是 9x9 形式的。

解題思路

理解題目后芥永,初步的破解方式就是對(duì)是否數(shù)獨(dú)的三個(gè)標(biāo)準(zhǔn)分別進(jìn)行驗(yàn)證篡殷,一旦有一個(gè)標(biāo)準(zhǔn)不符合,方法就返回false埋涧,橫和縱的驗(yàn)證還好板辽,分別做嵌套循環(huán)比對(duì)就行,而粗線標(biāo)記的小9宮格內(nèi)要驗(yàn)證需要推導(dǎo)一下下標(biāo)公式棘催,這種方式會(huì)出現(xiàn)三個(gè)三層的嵌套循環(huán)劲弦,時(shí)間復(fù)雜度為O(n3)。

因?yàn)橄虢档蜁r(shí)間復(fù)雜度醇坝,我想到使用Set會(huì)消除重復(fù)元素的特點(diǎn)邑跪,將三個(gè)標(biāo)準(zhǔn)做成三個(gè)Set,將三個(gè)標(biāo)準(zhǔn)要驗(yàn)證的數(shù)據(jù)放入Set中,并且記數(shù)被放入多少數(shù)字到Set画畅,最后對(duì)比Set的size和記數(shù)和數(shù)字個(gè)數(shù)就能知道相應(yīng)標(biāo)準(zhǔn)下是否有重復(fù)數(shù)字砸琅,這樣可以將三層嵌套循環(huán)改善為兩層。并且三個(gè)標(biāo)準(zhǔn)可以同時(shí)整合到一個(gè)循環(huán)中轴踱,代碼如下症脂。

class Solution {
    public boolean isValidSudoku(char[][] board) {
        int i = 0, j = 0;
        int rowCount = 0, colCount = 0, squareCount = 0;
        Set<String> rowSet = new HashSet<>();
        Set<String> colSet = new HashSet<>();
        Set<String> squareSet = new HashSet<>();

        
        for (i = 0; i < board.length; i++) {
            for (j = 0; j < board[i].length; j++) {
                if ('.' != board[i][j]) {
                    rowCount++;
                    rowSet.add(String.valueOf(board[i][j]));
                }

                if ('.' != board[j][i]) {
                    colCount++;
                    colSet.add(String.valueOf(board[j][i]));
                }

                if ('.' != board[i / 3 * 3 + j / 3][i * 3 % 9 + j % 3]) {
                    squareCount++;
                    squareSet.add(String.valueOf(board[i / 3 * 3 + j / 3][i * 3 % 9 + j % 3]));
                }
            }

            if (rowCount > rowSet.size() || colCount > colSet.size() || squareCount > squareSet.size()) {
                return false;
            }

            rowCount = 0;
            colCount = 0;
            squareCount = 0;
            rowSet.clear();
            colSet.clear();
            squareSet.clear();
        }
        
        return true;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市淫僻,隨后出現(xiàn)的幾起案子诱篷,更是在濱河造成了極大的恐慌,老刑警劉巖雳灵,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棕所,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡细办,警方通過(guò)查閱死者的電腦和手機(jī)橙凳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)蕾殴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笑撞,“玉大人,你說(shuō)我怎么就攤上這事钓觉≤罘剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵荡灾,是天一觀的道長(zhǎng)瓤狐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)批幌,這世上最難降的妖魔是什么础锐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荧缘,結(jié)果婚禮上皆警,老公的妹妹穿的比我還像新娘。我一直安慰自己截粗,他們只是感情好信姓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著绸罗,像睡著了一般意推。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上珊蟀,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天菊值,我揣著相機(jī)與錄音,去河邊找鬼。 笑死腻窒,一個(gè)胖子當(dāng)著我的面吹牛略步,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播定页,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼趟薄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了典徊?” 一聲冷哼從身側(cè)響起杭煎,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卒落,沒(méi)想到半個(gè)月后羡铲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡儡毕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年也切,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腰湾。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雷恃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出费坊,到底是詐尸還是另有隱情倒槐,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布附井,位于F島的核電站讨越,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏永毅。R本人自食惡果不足惜把跨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沼死。 院中可真熱鬧着逐,春花似錦、人聲如沸漫雕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浸间。三九已至太雨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魁蒜,已是汗流浹背囊扳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工吩翻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锥咸。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓狭瞎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親搏予。 傳聞我的和親對(duì)象是個(gè)殘疾皇子熊锭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 一不小心就沉迷數(shù)獨(dú)無(wú)法自拔,起初只是當(dāng)做鍛煉腦子的益智小游戲雪侥,后來(lái)看到了相關(guān)的數(shù)獨(dú)解題技巧碗殷,才知道原來(lái)方格間還蘊(yùn)藏...
    Icebay閱讀 7,562評(píng)論 0 9
  • 判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則速缨,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可锌妻。 數(shù)字 1-9 在每一行只能...
    陽(yáng)光樹(shù)林閱讀 535評(píng)論 0 51
  • 題目判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則旬牲,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可仿粹。 數(shù)字 1-9 在每一行...
    HITZGD閱讀 353評(píng)論 0 0
  • 題目描述 判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則原茅,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可吭历。 數(shù)字 1-9 在...
    凌霄文強(qiáng)閱讀 282評(píng)論 0 1
  • 由于上篇的算法存在一些不足,我們不免要繼續(xù)研究數(shù)獨(dú)游戲的完全解员咽,以獲得更高效高質(zhì)量的生成算法毒涧,對(duì)于完全解的生成過(guò)程...
    Chris啊飛飛閱讀 8,021評(píng)論 0 1