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;
  }
}
posted @ 2023-12-01 16:10  CrossAutomaton  阅读(4)  评论(0编辑  收藏  举报