36.有效的數獨

LeetCode 的算法題 PHP解法記錄

判斷一個 9x9 的數獨是否有效州袒。只需要根據以下規(guī)則揭绑,驗證已經填入的數字是否有效即可。

  1. 數字 1-9 在每一行只能出現一次郎哭。
  2. 數字 1-9 在每一列只能出現一次洗做。
  3. 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。

<small>上圖是一個部分填充的有效的數獨彰居。</small>

數獨部分空格內已填入了數字诚纸,空白格用 '.' 表示。

示例 1:

<pre>輸入:

  array(
["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
</pre>

示例 2:

<pre>輸入:

array(
["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
解釋: 除了第一行的第一個數字從 5 改為 8 以外陈惰,空格內其他數字均與 示例1 相同畦徘。
但由于位于左上角的 3x3 宮內有兩個 8 存在, 因此這個數獨是無效的。</pre>

說明:

  • 一個有效的數獨(部分已被填充)不一定是可解的抬闯。
  • 只需要根據以上規(guī)則井辆,驗證已經填入的數字是否有效即可。
  • 給定數獨序列只包含數字 1-9 和字符 '.' 溶握。
  • 給定數獨永遠是 9x9 形式的杯缺。

解:先寫解 得一分

function du($arr){
    // 橫豎 驗證
    for($i=0;$i<9;$i++){
        $heng=array();
        $shu=array();
        for($j=0;$j<9;$j++){
            if($arr[$i][$j] != '.'){
                $heng[] = $arr[$i][$j];
            }   
            if($arr[$j][$i] != '.'){
                $shu[] = $arr[$j][$i];// 也許我應該用col 和 row 但是我相信 世界是英文的也是中文的,最終一定是拼音的 =睡榆。=
            }   
        }
        if(count($heng) != count(array_unique($heng))){
            echo '橫排'.$j.'有重復數字';
        }
        if(count($shu) != count(array_unique($shu))){
            echo '豎排'.$i.'有重復數字';
        }
    }
    // 九格驗證
    for($m=0;$m<9;$m+=3){   
        for($n=0;$n<9;$n+=3){
            $box = array();
            for ($i = $m; $i < $m+3; $i++) {
                for ($j = $n; $j < ($n+3); $j++) {
                    if ($arr[$i][$j] != '.') {
                        $box[] = $arr[$i][$j];
                    }
                }
            }
            if (count($box) != count(array_unique($box))) {
                echo '盒子中有重復數字';
            }
        }
    }   
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末萍肆,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子胀屿,更是在濱河造成了極大的恐慌塘揣,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宿崭,死亡現場離奇詭異亲铡,居然都是意外死亡,警方通過查閱死者的電腦和手機葡兑,發(fā)現死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門奖蔓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人讹堤,你說我怎么就攤上這事吆鹤。” “怎么了蜕劝?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵檀头,是天一觀的道長。 經常有香客問我岖沛,道長暑始,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任婴削,我火速辦了婚禮廊镜,結果婚禮上,老公的妹妹穿的比我還像新娘唉俗。我一直安慰自己嗤朴,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布虫溜。 她就那樣靜靜地躺著雹姊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衡楞。 梳的紋絲不亂的頭發(fā)上吱雏,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音瘾境,去河邊找鬼歧杏。 笑死,一個胖子當著我的面吹牛迷守,可吹牛的內容都是我干的犬绒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼兑凿,長吁一口氣:“原來是場噩夢啊……” “哼凯力!你這毒婦竟也來了?” 一聲冷哼從身側響起礼华,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤沮协,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后卓嫂,有當地人在樹林里發(fā)現了一具尸體慷暂,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年晨雳,在試婚紗的時候發(fā)現自己被綠了行瑞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡餐禁,死狀恐怖血久,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情帮非,我是刑警寧澤氧吐,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布讹蘑,位于F島的核電站,受9級特大地震影響筑舅,放射性物質發(fā)生泄漏座慰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一翠拣、第九天 我趴在偏房一處隱蔽的房頂上張望版仔。 院中可真熱鬧,春花似錦误墓、人聲如沸蛮粮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽然想。三九已至,卻和暖如春欣范,著一層夾襖步出監(jiān)牢的瞬間又沾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工熙卡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杖刷,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓驳癌,卻偏偏與公主長得像滑燃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颓鲜,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361