题目地址:
https://leetcode.com/problems/find-smallest-common-element-in-all-rows/
给定一个 m × n m\times n m×n的矩阵,每一行严格递增,求最小的出现在每一行的数。如果不存在则返回 − 1 -1 −1。
直接对每个数出现次数进行计数,出现了 m m m次的就是答案。代码如下:
public class Solution {
public int smallestCommonElement(int[][] mat) {
int max = 0;
for (int[] row : mat) {
for (int x : row) {
max = Math.max(max, x);
}
}
int[] cnt = new int[max + 1];
for (int[] row : mat) {
for (int x : row) {
cnt[x]++;
}
}
for (int i = 1; i < cnt.length; i++) {
if (cnt[i] == mat.length) {
return i;
}
}
return -1;
}
}
时间复杂度 O ( m n ) O(mn) O(mn),空间 O ( M ) O(M) O(M), M M M是所有数字中最大者。