题解 | #牛牛的果实排序#素数筛

牛牛的果实排序

https://www.nowcoder.com/practice/975a263e2ae34a669354e0bd64db9e2a

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param trees int整型一维数组
     * @return int整型一维数组
     */
    public int[] primeFruits (int[] trees) {
        // 获取输入数组中的最大值
        int maxNum = Arrays.stream(trees).max().getAsInt();
        boolean[] isPrime = new boolean[maxNum + 1];
        Arrays.fill(isPrime, true);

        // 初始化isPrime数组,0和1不是质数
        isPrime[0] = isPrime[1] = false;

        // 标记质数
        for (int i = 2; i * i <= maxNum; i++) {
            if (isPrime[i]) {
                for (int j = i * i; j <= maxNum; j += i) {
                    isPrime[j] = false;
                }
            }
        }

        // 存储质数并计算质数的数量
        int count = 0;
        for (int num : trees) {
            if (num > 1 && isPrime[num]) {
                count++;
            }
        }

        // 创建新的数组存放质数
        int[] primeArray = new int[count];
        int index = 0;

        // 提取并放入质数
        for (int num : trees) {
            if (num > 1 && isPrime[num]) {
                primeArray[index++] = num;
            }
        }

        // 对质数数组进行排序
        Arrays.sort(primeArray);
        return primeArray;
    }
}

全部评论

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务