题解 | #牛牛的果实排序#素数筛
牛牛的果实排序
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;
}
}
查看8道真题和解析