题目链接
分析
遍历判断即可,由于数据范围较小,直接判断快过质数筛
代码实现
class Solution {
public:
int diagonalPrime(vector<vector<int>>& nums) {
int ans = 0, n = nums.size();
auto checkPrime = [](int x) {
for(int i = 2; i * i <= x; ++i) {
if(x % i == 0)
return false;
}
return x == 1 ? false : true;
};
for(int i = 0; i < n; ++i) {
if(nums[i][i] > ans && checkPrime(nums[i][i]))
ans = nums[i][i];
if(nums[i][n - i - 1] > ans && checkPrime(nums[i][n - i - 1]))
ans = nums[i][n - i - 1];
}
return ans;
}
};
复杂度分析
- 时间复杂度:$O(n \sqrt{ans})$
- 空间复杂度:$O(1)$