零 標題:算法(leetode,附思維導圖 + 全部解法)300題之(36)有效的數獨
前言
1)碼農三少 ,一個致力於 編寫極簡、但齊全題解(算法) 的博主。
2)文末附贈 價值上百美刀 資料。
一 題目描述
二 解法總覽(思維導圖)
三 全部解法
1 方案1
1)代碼:
// 方案1 “遍歷法”。
// 技巧:遍歷1次,看當前 行、列、宮(即 boxList 、共 9 個)是否有重復值。
// 思路:
// 1)狀態初始化
// 2)核心:遍歷整個 board ,不斷將 board[i][j] 存入相應的數組里 (rowList、columnList、boxList)
// 2.1)必須是非 '.' 才放入3個數組里
// 2.1.1)若 行、列、宮 中有重復值,則 直接返回 false
// 3)遍歷結束,返回結果 true
var isValidSudoku = function(board) {
// 1)狀態初始化
const rowList = new Array(9).fill(0).map(() => new Array(9).fill(0));
const columnList = new Array(9).fill(0).map(() => new Array(9).fill(0));
const boxList = new Array(3).fill(0).map(() => new Array(3).fill(0).map(() => new Array(9).fill(0)));
// 2)核心:遍歷整個 board ,不斷將 board[i][j] 存入相應的數組里 (rowList、columnList、boxList)
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
const c = board[i][j];
// 2.1)必須是非 '.' 才放入3個數組里
if (c !== '.') {
const index = c.charCodeAt() - '0'.charCodeAt() - 1;
rowList[i][index]++;
columnList[j][index]++;
boxList[Math.floor(i / 3)][Math.floor(j / 3)][index]++;
// 2.1.1)若 行、列、宮 中有重復值,則 直接返回 false
if (rowList[i][index] > 1 || columnList[j][index] > 1 || boxList[Math.floor(i / 3)][Math.floor(j / 3)][index] > 1) {
return false;
}
}
}
}
// 3)遍歷結束,返回結果 true
return true;
};
四 更多
1 算法通關 + 面試寶典
1)算法通關40講(極客 -外企大佬講的):
鏈接: https://pan.baidu.com/s/1C175QEmcAunjnCzYzoLBz 提取碼: hjna
2)動態規划專題(價值幾百美刀~):https://www.bilibili.com/video/BV1nt4y1Y7nz
3)前端面經:
3.1)https://www.nowcoder.com/tutorial/96
3.2)https://muyiy.cn/question
3.3)https://hub.fastgit.org/haizlin/fe-interview/blob/master/category/history.md
注:若失效請前往VX公眾號: 碼農三少 ,發送關鍵字: LeetCode 或 算法 ,即可獲取最新的鏈接~
2 刷題進度
1)LeetCode:307 / 2390 。
2)《劍指offer》:66 / 66 。
3)相關學習資料與筆記匯總:
https://github.com/CYBYOB/algorithm-leetcode/tree/master/資料%26筆記 。
4)注:所有題目均有 2-5種 左右的解法,后續還將不斷更新題目 & 題解。
敬請期待~
也歡迎大家進群一起 學習、交流、刷題&拿高薪~
3 GitHub - LeetCode項目倉庫
1)本項目地址:
https://github.com/CYBYOB/algorithm-leetcode 。
目標、願景:
讓每個人都能擁有一定的算法能力、以應對面試中(會舉一反三的同學還可以將其融入自己的肌肉和血液,甚至能夠賦能於公司的業務和技術)的算法。
本人每周仍在不斷的更新 —— 保證每周都有新的題目、題解方案刺激着您的神經 和 刷題欲望。
歡迎對算法感興趣的同學加入我們的社群。
QQ群: 933919972 ;
作者QQ: 1520112971 ;
作者VX: c13227839870(可拉您進群、一起學習與交流~) 。
4 作者標簽
1)“BAT里1名小小的偽全棧工程師,主攻前端,偶爾寫點后端”。
2)2019年的微信小程序應用開發賽 - 全國三等獎;
2019CODA比賽 - 前 17/211 強 且 榮獲“優秀團隊”稱號 等。
3)“半自媒體人”,
在校期間、個人公眾號(IT三少。新自媒體(公眾號)號: 碼農三少 )
在半年內實現了0到5.8K+的粉絲增長等。