Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 整数数组中的最小移位,使其差值>=k_Algorithm - Fatal编程技术网

Algorithm 整数数组中的最小移位,使其差值>=k

Algorithm 整数数组中的最小移位,使其差值>=k,algorithm,Algorithm,我被要求实现一个算法,该算法将以下内容作为输入: -整数A的排序数组,例如A=[0,0,0,0,2,4,4,4,4]。如果有帮助,实际输入将作为两个数组给出,第一个数组给出整数,第二个数组给出第一个整数的每个整数出现的次数。对于我们的示例[0,2,4],[5,1,5] -整数k 并返回两个十进制数字的唯一实数数组b,其连续元素至少相差k,最大差值| a[i]-b[i]|是可能的最小值。数组a和b都被排序 到目前为止,我已经将两个给定的数组合为一,正如我前面所描述的,在几个循环之后,我成功地创建了

我被要求实现一个算法,该算法将以下内容作为输入:

-整数A的排序数组,例如A=[0,0,0,0,2,4,4,4,4]。如果有帮助,实际输入将作为两个数组给出,第一个数组给出整数,第二个数组给出第一个整数的每个整数出现的次数。对于我们的示例[0,2,4],[5,1,5]

-整数k

并返回两个十进制数字的唯一实数数组b,其连续元素至少相差k,最大差值| a[i]-b[i]|是可能的最小值。数组a和b都被排序

到目前为止,我已经将两个给定的数组合为一,正如我前面所描述的,在几个循环之后,我成功地创建了一个数组a,一个具有唯一元素的排序数组,步骤如下:

-对于整数的每一次多重出现,例如5乘以0,我将它们移动到可能的最小距离:假设k=2,然后[0,0,0,0]->[-4,-2,0,2,4]

-然后我对数组进行排序,以找到由移位引起的多个外观

-重复这两个步骤,直到阵列只有唯一的元素。 如果我有办法将最后一个数组的元素移动到它们请求的位置,使它们的最终差值>=k,那么我假设后面的元素到起始数组的差值将由我请求的移位决定

我的整个想法可能是错误的或太慢了,但我已经到了这个问题的死胡同,所以任何帮助都将是伟大的!!提前谢谢你

附言:我举了一个小例子来说明整个过程: K=2,a=[0,1],b=[3,1]->c=[0,0,0,1],所以我们的结果应该是[-2,5,-0,5,1,5,2,5],这使得最大最小位移为2,50。

如果max-min K*n,则更容易: 设置


满足条件中的小数位数,并将b[0]=min。将k添加到b的下一个元素中

仅供将来参考,不需要家庭作业标记/不要使用。在本文中,您可以清楚地定义“移位”的含义。移位后的结果数组是否应该排序?[0,0,0,1]可以转换为[-1,1,-1,1],最小移位为1。@cmh移位是给定数组和aswer@anatolyg数组必须包含唯一的元素,因此结果[-2,5,-0,5,1,5,2,5]非常感谢!你的回答真的很有帮助!!
M+0, M+k, M+2k, ..., M+(n-1)k
|max-M-k(n-1)| = |min-M|. 
k=(max-min)/(n-1)