2661. 找出叠涂元素

根据题解的解题思路

设置rowCountcolCount两个数组来记录每行和每列,从而判断是否某行某列已满。
因此要取出每个元素的行列值,于是使用哈希表来存储。

注意rowCountcolCount两个数组要初始化为0,因此要使用vector来进行初始化
注意pair的取值,通过v.firstv.second来取值,而不是->
另外注意遍历哈希表中的pair时,要加&引用符号

class Solution {
public:
    int firstCompleteIndex(vector<int>& arr, vector<vector<int>>& mat) {
        int n = mat.size();
        int m = mat[0].size();
        unordered_map<int, pair<int, int>> mp;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                mp[mat[i][j]] = {i, j};
            }
        }
        // int rowCount[n], colCount[m]; 
        vector<int> rowCount(n, 0);
        vector<int> colCount(m, 0);
        for (int i = 0; i < arr.size(); ++i) {
            auto&v = mp[arr[i]];
            ++rowCount[v.first];
            if (rowCount[v.first] == m) return i;
            ++colCount[v.second];
            if (colCount[v.second] == n) return i;
        }
        return -1;
    }
};

你可能感兴趣的:(LeetCode,算法,数据结构)