[36] 有效的數獨 js

題目描述:

請你判斷一個?9 x 9 的數獨是否有效。只需要 根據以下規則 ,驗證已經填入的數字是否有效即可。

*

*

* 數字?1-9?在每一行只能出現一次。

* 數字?1-9?在每一列只能出現一次。

* 數字?1-9?在每一個以粗實線分隔的?3x3?宮內只能出現一次。(請參考示例圖)

注意:

* 一個有效的數獨(部分已被填充)不一定是可解的。

* 只需要根據以上規則,驗證已經填入的數字是否有效即可。

* 空白格用?'.'?表示。

輸入:board =

* [["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

解題思路:

  1. 先校驗橫向和豎向是否有重復,對于任意一個位置的數字來說,只有這一行沒有重復的,并且這一列也沒有重復的,說明這個數橫豎符合條件.

  2. 然后判斷3*3的九宮格是否有重復

解法一:

function isValidSudoku(board) {// 用來存放行的maplet rowMap = new Map();// 用來存放列的maplet columnMap = new Map();// 存放返回的結果let res = true;// 先校驗橫向和豎向是否有重復,對于任意一個位置的數字來說,只有這一行沒有重復的,//并且這一列也沒有重復的,說明這個數橫豎符合條件// 所以要做的就是判斷每一行每一列是否有重復的數字,這里行列一起判斷,別浪費循環for (let i = 0; i < 9; i++) {for (let j = 0; j < 9; j++) {if (rowMap.has(board[i][j])) {res = false;break;} else {if (board[i][j] !== '.') {rowMap.set(board[i][j], 1);}}if (columnMap.has(board[j][i])) {res = false;break;} else {if (board[j][i] !== '.') {columnMap.set(board[j][i], 1);}}}// 每一行列判斷完以后要清空兩個maprowMap.clear();columnMap.clear();}// 如果行列判斷完已經有重復了,就不用判斷后面的九格內不重復了if (!res) {return res;}// 三行為一輪循環,這兩個變量記錄第幾次行/列的跳躍,先把行的三次判斷完,// 然后換下一組9個的let rown = 0;let coln = 0;// 然后檢查九宮格是否有重復while (rown < 3 && coln < 3) {for (let i = 0; i < 3; i++) {for (let j = 0; j < 3; j++) {if (rowMap.has(board[rown * 3 + i][coln * 3 + j])) {res = false;break;} else {if (board[rown * 3 + i][coln * 3 + j] !== '.') {rowMap.set(board[rown * 3 + i][coln * 3 + j], 1);}  }}}rown = rown + 1;rowMap.clear();if (rown === 3) {coln = coln + 1;rown = 0;}}return res;
};

用時:

//507/507 cases passed (76 ms)

// Your runtime beats 84.31 % of typescript submissions

// Your memory usage beats 91.5 % of typescript submissions (44.3 MB)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162640.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162640.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162640.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

文件差分服務設計

需求 OTA&#xff08;Over-The-Air&#xff09;升級是一種至關重要的技術&#xff0c;用于更新嵌入式設備的固件或軟件&#xff0c;以確保設備具備最新功能和修復漏洞。在OTA升級過程中&#xff0c;使用差異算法工具&#xff08;如bsdiff、hdiffpatch和xdelta3&#xff09;能夠…

C++:一文讀懂智能指針

C11 引入了 3 個智能指針類型&#xff1a; 當使用智能指針時&#xff0c;我們首先需要包含 memory頭文件&#xff0c;這個頭文件包含了 C 標準庫中智能指針的定義。 1.std::unique_ptr<T> &#xff1a;獨占資源所有權的指針。 2.std::shared_ptr<T> &#xff1a;共…

【數據結構初階(4)】棧的基本操作實現

文章目錄 Ⅰ 概念及結構1. 棧的概念2. 棧的操作 Ⅱ 基本操作實現1. 棧的定義2. 初始化棧3. 元素入棧4. 元素出棧5. 獲取棧頂元素6. 獲取棧中有效元素個數7. 判斷棧空8. 銷毀棧 Ⅰ 概念及結構 1. 棧的概念 棧&#xff1a;棧是一種特殊的線性表&#xff0c;其只允許在固定的一端…

STM32分區跳轉問題

項目場景&#xff1a; 在OTA中&#xff0c;FLASH通常被劃分為以下幾種類型 bootloaderiapappbootloaderappapp保存區bootloaderapp1app2 不同的分區方式有不同的有點&#xff0c;但是共同點都是需要執行分區跳轉 問題1描述 但在分區跳轉過程中遇到過使用不同的編譯器不能跳轉…

Java,泛型

目錄 泛型的理解&#xff1a; 在ArrayList中使用泛型&#xff1a; 在Map中使用泛型&#xff1a; 在接口中使用泛型&#xff1a; 自定義泛型類/接口與自定義泛型方法 自定義類/接口&#xff1a; 關于泛型類的子類&#xff1a; 注意點&#xff1a; 注意點&#xff1a; 自…

MATLAB實現灰色預測

久違了&#xff0c;前段時間由于學習壓力大&#xff0c;就沒怎么更新MATLAB相關的內容&#xff0c;今天實在學不進去了&#xff0c;換個內容更新一下~ 本貼介紹灰色預測模型&#xff0c;這也是數學建模競賽常見算法中的一員&#xff0c;和許多預測模型一樣——底層原理是根據已…

監控員工上網有什么軟件丨三款好用的員工上網管理軟件推薦

監控員工上網行為是企業管理中不可或缺的一部分&#xff0c;因此&#xff0c;選擇一款好的監控員工上網的軟件至關重要。目前市場上存在多種監控員工上網的軟件&#xff0c;它們具有各種特點和功能&#xff0c;但企業需要仔細評估和選擇。 一、域之盾軟件 這是一款優秀的監控員…

利用GenericMenu創建上下文菜單或下拉菜單

使用GenericMenu 創建自定義上下文菜單和下拉菜單豐富自己的編輯器功能。 GenericMenu 介紹 變量 allowDuplicateNames 允許菜單具有多個同名的菜單項。 公共函數 AddDisabledItem 向菜單添加已禁用的項。 AddItem 向菜單添加一個項。 AddSeparator 向菜單添加一個分隔符項…

grafana二次啟動失敗

背景 安裝grafana后啟動使用正常&#xff0c;但是關機后再啟動顯示啟動失敗&#xff0c;但是看日志又沒有報錯信息&#xff0c;但是就是啟動不了 原因分析 其實是/var/lib/grafana/grafana.db文件損壞了&#xff0c;所以需要把這個文件刪掉之后重新啟動就正常了&#xff0c;…

如何在AppLink配置金蝶云星空預算使用單流程

上一篇有提到金蝶云星空如何通過AppLink平臺配置銷售訂單操作&#xff0c;這次來演示下如何“保存預算使用單”、“調撥單定時自動審核”以及“預算使用單反審核后刪除”操作。 根據請求數據保存預算使用單 當webhook接收到數據時觸發流程 步驟1&#xff1a;根據webhook的請…

OpenGL YUV 和 RGB 圖像相互轉換出現的偏色問題怎么解決?

未經作者(微信ID:Byte-Flow)允許,禁止轉載 文章首發于公眾號:字節流動 早上知識星球里的一位同學,遇到 yuv2rgb 偏色問題,這個問題比較典型,今天展開說一下。 省流版 首先 yuv2rgb 和 rgb2yuv 之間的轉換要基于相同的標準,轉換使用不同的標準肯定會引起偏色,常見的…

短視頻矩陣系統源碼搭建部署分享

一、 短視頻矩陣系統源碼搭建部署分享 目錄 一、 短視頻矩陣系統源碼搭建部署分享 二、短視頻矩陣系統搭建功能設計 三、 抖音矩陣號矩陣系統功能設計原則 四、 短視頻矩陣開發部分源碼展示 很高興能夠幫助您&#xff0c;以下是短視頻矩陣系統源碼搭建部署分享&#xff1a…

怎么快速卸載office365

怎么快速卸載office365 根據官網提供的兩種解決方案即點即用或MSIMicrosoft Store 根據官網提供的兩種解決方案 官網地址&#xff1a;https://support.microsoft.com/zh-cn/office/%E4%BB%8E-pc-%E5%8D%B8%E8%BD%BD-office-9dd49b83-264a-477a-8fcc-2fdf5dbf61d8#OfficeVersio…

sql經典練習(包括運行通過代碼)

建庫 導入數據庫并運行 # 學生表 Student&#xff1a; ? create table Student( ? SId varchar(10) , ? Sname varchar(10), ? Sage datetime, ? Ssex varchar(10)); ? insert into Student values(01 , 趙鐵柱 , 1990-01-01 , 男); ? insert into Student values(02 …

智能優化算法 | Matlab實現金豺優化算法(GJO)(內含完整源碼)

文章目錄 效果一覽文章概述源碼設計參考資料效果一覽 文章概述 智能優化算法 | Matlab實現金豺優化算法(GJO)(內含完整源碼) 源碼設計 %%clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000

PHP 正則式 全能匹配URL(UBB)

PHP 正則式 全能匹配URL&#xff08;UBB&#xff09; 語言&#xff1a;PHP 注明&#xff1a;正則式 無語言限制&#xff08;js、PHP、JSP、ASP、VB、.net、C#...&#xff09;一切皆可。 簡介&#xff1a;PHP UBB 正則式 全能匹配URL 自動加超級鏈接。網上找了很多都不匹配或…

數字化轉型過程中面臨最大的問題是什么?如何借助數字化工具實現快速轉型?

在科技快速發展的時代&#xff0c;數字化轉型已經成為企業的重要戰略。當企業努力適應數字化時代并取得成功時&#xff0c;他們可能會面臨各種必須有效應對的挑戰。   數字化轉型不僅僅是將新技術應用到企業的運營中&#xff0c;還需要對企業的運營方式、與客戶的互動方式和價…

數字人直播系統開發要注意的陷阱

數字人做為元宇宙的底層基座&#xff0c;BAT都在跑步進場&#xff0c;目前具有前瞻性的公司都在布局數字人產業。數字人可以應用于很多業務場景&#xff0c;對今年來說&#xff0c;無疑數字人直播系統是最火的。像去年數字人直播SAAS系統定制開發的話沒有個百把萬是下不來的。但…

求臻醫學六周年,我們的故事值得被記錄

6載光陰求臻醫學持續以科技創新推動產業升級在腫瘤精準診療領域持續深耕致力于為腫瘤患者生命續航每一位求臻人都是我們前進的力量也是我們不斷創新的源泉我們不拘泥于一種聲音以多元化的視角探索前行

app小程序定制的重點|軟件定制開發|網站搭建

app小程序定制的重點|軟件定制開發|網站搭建 App小程序定制開發是近年來快速發展的一項技術服務&#xff0c;隨著移動互聯網的普及和用戶需求的不斷升級&#xff0c;越來越多的企業和個人開始關注和需求定制化的小程序開發。那么&#xff0c;對于app小程序定制開發來說&#xf…