其他分享
首页 > 其他分享> > leetcode2133.检查是否每一行每一列都包含全部整数(简单,周赛)

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