LeetCode. 3115. 质数的最大距离

82 阅读1分钟

题目

给你一个整数数组 nums

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

思路

存储第一个质数的下标, 之后的质数减去下标就是最大的距离.

代码

class Solution {
    public int maximumPrimeDifference(int[] nums) {
        int index = -1;
        int ans = 0;
        for (int i = 0; i < nums.length; i++) {
            boolean prime = isPrime(nums[i]);
            if (prime) {
                if (index < 0) {
                    index = i;
                }
                ans = Math.max(ans, i - index);
            }
        }
        return ans;
    }

    public boolean isPrime(int number) {
        if (number < 2) {
            return false;
        }

        int sqrt = (int) Math.sqrt(number);
        for (int i = 2; i <= sqrt; i++) {
            if (number % i == 0) {
                return false;
            }
        }

        return true;
    }
}

好像可以不需要判断 ans 与 i - index 的大小.. 因为是顺序遍历,可以直接赋值?

判断质数的方法是直接让 AI 生成的..

题解

灵神题解 : leetcode.cn/problems/ma…