零 标题:算法(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 ~