2133检查是否每一行每一列都包含全部整数 | 算法300题
零 标题:算法(leetode,附思维导图 + 全部解法)300题之(2133)检查是否每一行每一列都包含全部整数
一 题目描述
二 解法总览(思维导图)
三 全部解法
1 方案1
1)代码:
// 方案1 “哈希法(JS里的 Map数据结构 )” // 技巧:“涉及数量、唯一性的,优先考虑 哈希(JS里的Map数据结构)”。 // 思路: // 1)状态初始化:map = new Map() 。 // 2)核心1:遍历所有 行 ,看其是否 “包含从 1到n 的全部整数” 。 // 2.1)每次遍历,均先 清空map 。 // 2.2)遍历当前行的每一个元素。 // 2.2.1)若 当前元素 已存在于 map ,则 说明存在重复了、直接返回 false 。 // 2.2.2)若 当前元素 不存在于 map ,则 将该元素放入 map 中。 // 3)核心2:遍历所有 列 ,看其是否 “包含从 1到n 的全部整数” 。 // 3.1)每次遍历,均先 清空map 。 // 3.2)遍历当前列的每一个元素。 // 3.2.1)若 当前元素 已存在于 map ,则 说明存在重复了、直接返回 false 。 // 3.2.2)若 当前元素 不存在于 map ,则 将该元素放入 map 中。 // 4)行、列均满足条件,返回 true 。 var checkValid = function(matrix) { // 1)状态初始化:map = new Map() 。 const l = matrix.length; let map = new Map(); // 2)核心1:遍历所有 行 ,看其是否 “包含从 1到n 的全部整数” 。 for (let i = 0; i < l; i++) { // 2.1)每次遍历,均先 清空map 。 map.clear(); // 2.2)遍历当前行的每一个元素。 for (let j = 0; j < l; j++) { const tempVal = matrix[i][j]; // 2.2.1)若 当前元素 已存在于 map ,则 说明存在重复了、直接返回 false 。 if (map.has(tempVal)) { return false; } // 2.2.2)若 当前元素 不存在于 map ,则 将该元素放入 map 中。 else { map.set(tempVal, 1); } } } // 3)核心2:遍历所有 列 ,看其是否 “包含从 1到n 的全部整数” 。 for (let i = 0; i < l; i++) { // 3.1)每次遍历,均先 清空map 。 map.clear(); // 3.2)遍历当前列的每一个元素。 for (let j = 0; j < l; j++) { const tempVal = matrix[j][i]; // 3.2.1)若 当前元素 已存在于 map ,则 说明存在重复了、直接返回 false 。 if (map.has(tempVal)) { return false; } // 3.2.2)若 当前元素 不存在于 map ,则 将该元素放入 map 中。 else { map.set(tempVal, 1); } } } // 4)行、列均满足条件,返回 true 。 return true; };
四 资源分享 & 更多
1 历史文章 - 总览
2 【资源分享】算法通关 + 面试宝典算法通关 + 面试宝典
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 或 算法 ,即可获取最新的链接~
3 博主简介
码农三少 ,一个致力于编写 极简、但齐全题解(算法) 的博主。
专注于 一题多解、结构化思维 ,欢迎一起刷穿 LeetCode ~