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

题目:

给你一个整数数组 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 中至少有一个质数。

思路:

打表,将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;
    }
}
相关推荐
晓晓hh13 分钟前
JavaSE学习——set集合和Map映射
学习
Q741_14723 分钟前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
The_Ticker24 分钟前
印度股票实时行情API(低成本方案)
python·websocket·算法·金融·区块链
夏乌_Wx28 分钟前
剑指offer | 2.4数据结构相关题目
数据结构·c++·算法·剑指offer·c/c++
لا معنى له1 小时前
Var-JEPA:联合嵌入预测架构的变分形式 —— 连接预测式与生成式自监督学习 ----论文翻译
人工智能·笔记·学习·语言模型
世人万千丶1 小时前
Flutter 框架跨平台鸿蒙开发 - 宠物语言翻译器应用
学习·flutter·华为·开源·harmonyos·鸿蒙
AI成长日志1 小时前
【笔面试算法学习专栏】哈希表基础:两数之和与字母异位词分组
学习·算法·面试
"菠萝"1 小时前
C#知识学习-021(文字关键字)
开发语言·学习·c#
chase。1 小时前
【学习笔记】让机器人“边想边动”——实时动作分块流策略的执行方法
笔记·学习·机器人
abant21 小时前
leetcode 239 单调队列 需要一些记忆
算法·leetcode·职场和发展