arrays - 长度为 K 的 N 个整数的神奇数组 A

标签 arrays algorithm number-theory

给定一个包含 N 个整数的数组 A,如果它的所有元素恰好有 3 个除数,则这个数组称为神奇数组。现在您必须将给定的数组转换为神奇的K 长度数组。您可以按任意时间顺序执行以下操作。

  1. 将数组中任意元素的值加1。

  2. 将数组中任意元素的值减1。

  3. 删除数组的任意元素。

约束:

1 <= N <= 1000000
1 <= K <= N
1 <= A <= 1000000

Sample Input
5(size of the array) 3(K)
1 4 10 8 15

Output
4

我尝试过的解决方案:

迭代数组的每个元素,检查素数平方附近并将此差异添加到全局计数操作(用于计算所需操作的变量)。这个时间顺序是n^2。

寻找更好的解决方案。

最佳答案

用最接近的素数平方差的绝对值制作一个数组

使用QuickSelect分离 K 较小差异的算法(平均复杂度趋向于 O(N),而最坏的二次情况是可能的)

计算它们的总和

关于arrays - 长度为 K 的 N 个整数的神奇数组 A,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53881432/

相关文章:

java - 关于推荐引擎

php - 权衡搜索结果

有人可以解释一下这个 "kth smallest integer in an unsorted array"代码吗? - C

java - Java 中的素数测试是如何工作的?

javascript - JS/ReactJS - 分配新变量会更改原始变量

arrays - Postgresql - 检查给定字符串是否以字符串数组的任何元素开头

algorithm - 计算不同的数字

algorithm - 极大值丢番图分析

java - 什么是同时存储 Integer 和 array[String] 值的良好数据结构?

arrays - 直接通过 Evaluate 检索一维数组的值