leetcode-有效的數(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)一次。

上圖是一個(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 形式的。

代碼


/**
 * @param {character[][]} board
 * @return {boolean}
 */
var isValidSudoku = function(board) {
    let rows = {};
    let ranks = {};
    let react = {};
    let result = true;
    for(let n=0;n<board.length;n++){
        for(let m=0;m<board[n].length;m++){
            let value = board[n][m]
            if(value != '.'){
                
                if(!rows[n]){
                    rows[n] ={}
                }
                if(!ranks[m]){
                    ranks[m]={}
                }
           
                //條件一
                if(!rows[n][value]){
                    rows[n][value] = true
                }else{
                    result = false;
                }
                //條件二
                if(!ranks[m][value]){
                    ranks[m][value] = true;
                }else{
                    result = false;
                }
                //條件三
                
                let rowsN = Math.ceil((n+1)/3);
                let ranksM = Math.ceil((m+1)/3);
               
                if(!react[rowsN]){
                    react[rowsN] = {}
                }
                if( !react[rowsN][ranksM] ){
                    react[rowsN][ranksM] = {}
                }
                if(!react[rowsN][ranksM][value]){
                    react[rowsN][ranksM][value] = true
                }else{
                    result = false;
                }
            }
            
        }
    }

    return result
    
    
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 由于對(duì)數(shù)據(jù)結(jié)構(gòu)和算法掌握的不熟練,目前是小白入門階段,痛下決心,要好好補(bǔ)一補(bǔ)。從大神大牛的算法學(xué)習(xí),逐漸自己加強(qiáng)自...
    我是誰(shuí)之自我發(fā)現(xiàn)閱讀 730評(píng)論 1 2
  • 題目判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。 數(shù)字 1-9 在每一行...
    HITZGD閱讀 403評(píng)論 0 0
  • 判斷一個(gè) 9x9 的數(shù)獨(dú)是否有效。只需要根據(jù)以下規(guī)則,驗(yàn)證已經(jīng)填入的數(shù)字是否有效即可。 數(shù)字 1-9 在每一行只能...
    1f872d1e3817閱讀 1,880評(píng)論 0 0
  • 昨天下午到今天早晨和兩個(gè)高中好友相聚,很快樂,很開心。 我們分享自己的經(jīng)歷、看法、觀點(diǎn)、故事、麻煩、煩惱…… 就這...
    3SeaSightSeer閱讀 459評(píng)論 0 0
  • 總在 等待 一份夢(mèng)幻的愛 發(fā)呆 離開 即使無(wú)人替代 時(shí)間走的太快 謊言不敢揭拆 你對(duì)我愛理不睬 我怨你不分好賴 是...
    初初遇見閱讀 231評(píng)論 0 0

友情鏈接更多精彩內(nèi)容