给你一个整数数组 nums
。
返回两个(不一定不同的)质数在 nums
中 下标 的 最大距离。
示例 1:
输入: nums = [4,2,9,5,3]
输出: 3
解释: nums[1]
、nums[3]
和 nums[4]
是质数。因此答案是 |4 - 1| = 3
。
示例 2:
输入: nums = [4,8,2,8]
输出: 0
解释: nums[2]
是质数。因为只有一个质数,所以答案是 |2 - 2| = 0
。
提示:
·1 <= nums.length <= 3 * 105
·1 <= nums[i] <= 100
·
输入保证 nums
中至少有一个质数。
题目大意:计算数组中首尾两个质数之间的距离。
分析:按照题意计算首尾两个质数的位置,返回两个位置之间的距离即可。
class Solution {
public:
bool isPrime(int num){
if(num==1) return false;
for(int i=2;i<=sqrt(num);++i){
if(!(num%i)) return false;
}
return true;
}
int maximumPrimeDifference(vector<int>& nums) {
int id1=-1,id2=nums.size();
while(!isPrime(nums[++id1]));
while(!isPrime(nums[--id2]));
return id2-id1;
}
};