N个整数的奇数数组A,长度为K

时间:2018-12-21 08:29:00

标签: arrays algorithm number-theory

给出由N个整数组成的数组A ,如果其所有元素均具有 3个除数,则该数组称为magical。现在,您必须将给定的数组转换为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。

寻找更好的解决方案。

2 个答案:

答案 0 :(得分:1)

使用最接近素数平方的差的绝对值构成一个数组

使用QuickSelect算法来分离K较小的差异(平均复杂度往往为O(N),而最坏的二次情况则有可能)

计算总和

答案 1 :(得分:0)

您可以尝试以下方法查找具有3个因数的数字

copy()

同样可以申请数组,

希望这会有所帮助