本文主要是介绍2661. 找出叠涂元素,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
根据题解的解题思路
设置rowCount
和colCount
两个数组来记录每行和每列,从而判断是否某行某列已满。
因此要取出每个元素的行列值,于是使用哈希表来存储。
注意rowCount
和colCount
两个数组要初始化为0,因此要使用vector
来进行初始化
注意pair
的取值,通过v.first
和v.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;}
};
这篇关于2661. 找出叠涂元素的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!