1198. 找出所有行中最小公共元素 - Kotlin 与运算

Smile_slime_47

Problem: 1198. 找出所有行中最小公共元素

思路

参考位运算的思想,由于数据范围比较小,我们可以用一个boolean数组记录当前每个数字是否出现过,map[i]=true即数字i在目前遍历完毕的矩阵中的每一行都出现过

用一个rowMap记录当前行每个元素是否出现,每次令rowMap和map进行与运算,最终得到的map中为true的元素即为整个矩阵中的公共元素,返回下标最小的元素即可

复杂度

  • 时间复杂度:

  • 空间复杂度:

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
fun smallestCommonElement(mat: Array<IntArray>): Int {
val map = BooleanArray(10001) { true }
for (row in mat) {
val rowMap = BooleanArray(10001) { false }
for (col in row) {
rowMap[col] = true
}
for (i in map.indices) {
map[i] = map[i] && rowMap[i]
}
}
return map.indexOfFirst { it }
}
}
Comments
On this page
1198. 找出所有行中最小公共元素 - Kotlin 与运算