LeetCode 3044. Most Frequent Prime
原题链接
简单
作者:
_YH_YH_
,
2024-02-20 05:22:34
,
所有人可见
,
阅读 54
class Solution {
public:
bool is_prime(int n) {
if (n < 2) return false;
for (int i = 2; i <= n / i; i++)
if (n % i == 0)
return false;
return true;
}
int mostFrequentPrime(vector<vector<int>>& mat) {
int n = mat.size(), m = mat[0].size();
unordered_map<int, int> cnt;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
for(int x = -1; x <= 1; x++){
for(int y = -1; y <= 1; y++){
if(x == 0 && y == 0) continue;
int a = i, b = j;
int v = 0;
while(a >= 0 && a < n && b >= 0 && b < m){
v = v * 10 + mat[a][b];
if(v > 10 && is_prime(v)) cnt[v]++;
a += x;
b += y;
}
}
}
}
}
int res = -1;
int freq = -1;
for (auto& [k, v] : cnt)
if (v > freq || (v == freq && k > res)) {
freq = v;
res = k;
}
return res;
}
};