詹学伟
詹学伟
Published on 2024-07-02 / 23 Visits
0
0

质数的最大距离

一、题目

给你一个整数数组 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 int maximumPrimeDifference(int[] nums) {
        List<Integer> indexList = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            if (isPrime(nums[i])) {
                indexList.add(i);
            }
        }
        return indexList.get(indexList.size() - 1) - indexList.get(0);
    }

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

提交记录二

class Solution {
    public int maximumPrimeDifference(int[] nums) {
        int left = 0;
        int right = nums.length;

        if (nums.length == 1) {
            return 0;
        }

        for (int i = 0; i < nums.length; i++) {
            if (isPrime(nums[i])) {
                left = i;
                break;
            }
        }
        for (int i = nums.length - 1; i >= 0; i--) {
            if (isPrime(nums[i])) {
                right = i;
                break;
            }
        }
        return right - left;
    }

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


Comment