摘要:題目描述有效的數(shù)獨判斷一個的數(shù)獨是否有效。上圖是一個部分填充的有效的數(shù)獨。數(shù)獨部分空格內(nèi)已填入了數(shù)字,空白格用表示。說明一個有效的數(shù)獨部分已被填充不一定是可解的。只需要根據(jù)以上規(guī)則,驗證已經(jīng)填入的數(shù)字是否有效即可。
題目描述
有效的數(shù)獨
判斷一個 9x9 的數(shù)獨是否有效。只需要根據(jù)以下規(guī)則,驗證已經(jīng)填入的數(shù)字是否有效即可。
數(shù)字 1-9 在每一行只能出現(xiàn)一次。
數(shù)字 1-9 在每一列只能出現(xiàn)一次。
數(shù)字 1-9 在每一個以粗實線分隔的 3x3 宮內(nèi)只能出現(xiàn)一次。
上圖是一個部分填充的有效的數(shù)獨。
數(shù)獨部分空格內(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
解釋: 除了第一行的第一個數(shù)字從 5 改為 8 以外,空格內(nèi)其他數(shù)字均與 示例1 相同。
但由于位于左上角的 3x3 宮內(nèi)有兩個 8 存在, 因此這個數(shù)獨是無效的。
說明:
一個有效的數(shù)獨(部分已被填充)不一定是可解的。 只需要根據(jù)以上規(guī)則,驗證已經(jīng)填入的數(shù)字是否有效即可。 給定數(shù)獨序列只包含數(shù)字 1-9 和字符 "." 。 給定數(shù)獨永遠(yuǎn)是 9x9 形式的。思路
分三步判斷該數(shù)獨是否有效:
1.每行是否有效:雙重循環(huán)
2.每列是否有效:雙重循環(huán)
3.每個3*3小格是否有效:四重循環(huán).一共九個小格子,每個格子的頂點元素下標(biāo)分別為:
(0,0)(0,3)(0,6)(3,0)(3,3)(3,6)(6,0)(6,3)(6,6)
用num[i]記錄數(shù)字i是否使用過,num[i]標(biāo)識數(shù)字i使用過,如果重復(fù)使用,則返回false.
注意下標(biāo)和(數(shù)字-1)的對應(yīng),每次用完要把num清空。
/** * @param {character[][]} board * @return {boolean} */ var isValidSudoku = function(board) { let num1 = []; let num2 = []; let num3 = []; for(let i = 0; i < 9; i++){ for(let posn = 0; posn < 9; posn++){ num1[posn] = false; num2[posn] = false; } for(let j = 0; j < 9; j++){ if(board[i][j] != "."){ let n = parseInt(board[i][j]); if(!num1[n-1]){ num1[n-1] = true; }else{ return false; } } if(board[j][i] != "."){ let n = parseInt(board[j][i]); if(!num2[n-1]){ num2[n-1] = true; }else{ return false; } } } } for(let i = 0; i <= 6; i+=3){ for(let j = 0; j <= 6; j+=3){ //console.log(i,j); for(let posn = 0; posn < 9; posn++){ num3[posn] = false; } //console.log(num3); for(let s1 = i; s1 < i+3; s1++){ for(let s2 = j; s2 < j+3; s2++){ if(board[s1][s2] != "."){ let n = parseInt(board[s1][s2]); //console.log(n,num3[n]); if(!num3[n-1]){ num3[n-1] = true; }else{ return false; } } } } } } return true; };
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/97396.html
摘要:上圖是一個部分填充的有效的數(shù)獨。數(shù)獨部分空格內(nèi)已填入了數(shù)字,空白格用表示。但由于位于左上角的宮內(nèi)有兩個存在因此這個數(shù)獨是無效的。說明一個有效的數(shù)獨部分已被填充不一定是可解的。只需要根據(jù)以上規(guī)則,驗證已經(jīng)填入的數(shù)字是否有效即可。 判斷一個 9x9的數(shù)獨是否有效。只需要根據(jù)以下規(guī)則,驗證已經(jīng)填入的數(shù)字是否有效即可。 數(shù)字 1-9 在每一行只能出現(xiàn)一次。 數(shù)字 1-9 在每一列只能出現(xiàn)一次...
摘要:本文只是簡單理解算法,并不會深入的討論。大部分來自數(shù)組部分。如果數(shù)組中每個元素都不相同,則返回。示例輸入輸出加給定一個由整數(shù)組成的非空數(shù)組所表示的非負(fù)整數(shù),在該數(shù)的基礎(chǔ)上加一。盡量減少操作次數(shù)。 算法(algorithm),在數(shù)學(xué)(算學(xué))和計算機科學(xué)之中,為任何良定義的具體計算步驟的一個序列,常用于計算、數(shù)據(jù)處理和自動推理。精確而言,算法是一個表示為有限長列表的有效方法。算法應(yīng)包含清晰...
摘要:分布式的管理和當(dāng)我在談?wù)摷軜?gòu)時我在談啥狀態(tài)碼詳解無狀態(tài)協(xié)議和請求支持哪些方法分層協(xié)議棧有哪些數(shù)據(jù)結(jié)構(gòu)運用場景說說你常用的命令為什么要有包裝類面向?qū)ο蟮奶卣魇巧妒巧队惺裁春锰幭到y(tǒng)設(shè)計工程在線診斷系統(tǒng)設(shè)計與實現(xiàn)索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當(dāng)我在談?wù)揜estFul架構(gòu)時我在談啥?...
摘要:如果重復(fù)則不合法,否則極為合法。在這里我們使用數(shù)組代替作為存儲行列和小正方形的值得數(shù)據(jù)結(jié)構(gòu)。我存儲這所有的行列小正方形的情況,并判斷當(dāng)前值是否重復(fù)。外循環(huán)則代表對下一行,下一列和下一個小正方形的遍歷。 題目要求 Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku boa...
摘要:每天會折騰一道及以上題目,并將其解題思路記錄成文章,發(fā)布到和微信公眾號上。三匯總返回目錄在月日月日這半個月中,做了匯總了數(shù)組知識點?;蛘呃奖疚淖钕旅妫砑拥奈⑿诺葧鶕?jù)題解以及留言內(nèi)容,進(jìn)行補充,并添加上提供題解的小伙伴的昵稱和地址。 LeetCode 匯總 - 2019/08/15 Create by jsliang on 2019-08-12 19:39:34 Recently...
閱讀 2023·2019-08-30 15:54
閱讀 3565·2019-08-30 15:52
閱讀 1857·2019-08-29 17:20
閱讀 2553·2019-08-29 17:08
閱讀 2378·2019-08-26 13:24
閱讀 838·2019-08-26 11:59
閱讀 2814·2019-08-23 14:50
閱讀 666·2019-08-23 14:20