【康复学习--LeetCode每日一题】3115. 质数的最大距离

题目:

给你一个整数数组 nums。

返回两个(不一定不同的)质数在 nums 中 下标 的 最大距离。

示例 1:

输入: nums = 4,2,9,5,3

输出: 3

解释: nums1、nums3 和 nums4 是质数。因此答案是 |4 - 1| = 3。

示例 2:

输入: nums = 4,8,2,8

输出: 0

解释: nums2 是质数。因为只有一个质数,所以答案是 |2 - 2| = 0。

提示:

1 <= nums.length <= 3 * 105

1 <= numsi <= 100

输入保证 nums 中至少有一个质数。

思路:

打表,将100以内的质数先穷举出来,然后用一个tmp记录第一个质数的下标,后面每遇到一个质数就去更新ans

代码:

java 复制代码
class Solution {
    // 打表,将100以内的质数先穷举出来
    // 然后用一个tmp记录第一个质数的下标,后面每遇到一个质数就去更新ans
    public int maximumPrimeDifference(int[] nums) {
        Set<Integer> primes = new HashSet<>(Arrays.asList(
            2, 3, 5, 7, 11,
            13, 17, 19, 23, 29,
            31, 37, 41, 43, 47,
            53, 59, 61, 67, 71,
            73, 79, 83, 89, 97
        ));

        int n = nums.length;
        int tmp = -1, ans = 0;
        for (int i = 0; i < n; ++i) {
            if (primes.contains(nums[i])) {
                if (tmp != -1) {
                    ans = Math.max(ans, i - tmp);
                } else {
                    tmp = i;
                }
            }
        }
        return ans;
    }
}
相关推荐
圣保罗的大教堂2 分钟前
leetcode 3863. 将一个字符串排序的最小操作次数 中等
leetcode
Tisfy10 分钟前
LeetCode 3863.将一个字符串排序的最小操作次数:分类讨论(一次遍历)——简单易懂版
算法·leetcode·字符串·题解·分类讨论
叼烟扛炮20 分钟前
Linux 学习笔记(八):GCC 编译器的四大阶段与链接原理
linux·笔记·学习
Young Doro31 分钟前
从平衡表征到最小充分因果表征:端到端神经网络因果效应估计
算法
Z21-X32 分钟前
云原生运维学习笔记:从云计算概念到服务器硬件的入门之旅
运维·笔记·学习·云原生
0+11138 分钟前
算法 --递归
算法·leetcode
打工仔折腾 AI39 分钟前
介入式脑机接口的跨尺度解码与闭环调控:从算法落地到后端工程实践
人工智能·后端·python·深度学习·算法·ai agent 实战
叼烟扛炮42 分钟前
Linux 学习笔记(七):软件安装与 Vim 编辑器极速入门
linux·学习·编辑器
hgy89691 小时前
Sufer技能积累手册
学习
叼烟扛炮1 小时前
Linux 学习笔记(十六):进程的调度与优先级——谁先抢到 CPU?
linux·笔记·学习