2661. 找出叠涂元素
2661. 找出叠涂元素
2023年12月1日
逆天题目描述,模拟一下就完事了。
大致意思和思路
遍历\(arr\)数组,然后再\(mat\)矩阵中将对应的数涂色。
如果当遍历到第\(i\)个元素时,判断\(mat\)矩阵中对应的元素,如果该元素所在的行或者所在的列的数都被涂色了,就返回\(i\)。
模拟一下就可以了,记录行和列的操作,再把arr元素对应的行列信息保存一下,行列二维转一维即可。
代码
class Solution {
public int firstCompleteIndex(int[] arr, int[][] mat) {
int n = mat.length;
int m = mat[0].length;
int[] x = new int[n];
int[] y = new int[m];
int[] dmp = new int[arr.length + 1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
dmp[mat[i][j]] = i * m + j;
}
}
int cnt = 0;
for (int i = 0; i < arr.length; i++) {
int xx = dmp[arr[i]] / m;
int yy = dmp[arr[i]] % m;
x[xx]++;
y[yy]++;
if (x[xx] == m || y[yy] == n) {
cnt = i;
break;
}
}
return cnt;
}
}