leetcode2133.检查是否每一行每一列都包含全部整数(简单,周赛)
作者:互联网
在自己的代码上做优化:
1.用一个双循环实现行和列的同时访问:
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
//matrix[i][j]
//matrix[j][i]
}
}
2.看一下matrix[i][j]取值范围:放入hash后直接判断size()是否等于n就好了,不用跟存1-n的hash来比较。
class Solution {
public:
bool checkValid(vector<vector<int>>& matrix) {
//取值范围是0到n 直接用size()判断
int n = matrix.size();
for (int i = 0; i < n; ++i) {
unordered_set<int> hash1, hash2;
for (int j = 0; j < n; ++j) {
hash1.insert(matrix[i][j]);
hash2.insert(matrix[j][i]);
}
if (hash1.size() != n || hash2.size() != n) return false;
}
return true;
}
};
3.再放入之前看一下该元素在hash是否存在,如果不存在才放,存在直接return false
class Solution {
public:
bool checkValid(vector<vector<int>>& matrix) {
int n = matrix.size();
for (int i = 0; i < n; ++i) {
unordered_set<int> hash1, hash2;
for (int j = 0; j < n; ++j) {
if (hash1.count(matrix[i][j])) return false;
if (hash2.count(matrix[j][i])) return false;
hash1.insert(matrix[i][j]);
hash2.insert(matrix[j][i]);
}
//if (hash1.size() != n || hash2.size() != n) return false;
}
return true;
}
};
标签:周赛,return,matrix,int,leetcode2133,hash1,一列,hash2,size 来源: https://blog.csdn.net/zhangjiaji111/article/details/122426086