通过合并相邻元素直到数组达到特定大小来最小化数组中元素之间的最大差异

问题描述

我看到很多通过删除/插入元素或增加/减少元素的值来最小化数组元素之间的最大差异。今天想到了一个变种,一直在寻找解决方案。

问题: 给定一个包含 n 个元素且目标大小为 m 的数组,1

我的第一直觉是

while(array.size() > m) 
  mindiff = difference of merge(array[0],array[1])
  mindiffarray = merge(array[0],array[1])
  for(i = 0 to array.size()-2) 
    subarray = merge(array[i],array[i+1])
    if difference of subarray < mindiff
       mindiff = difference of subarray
       mindiffarray = subarray
  array = mindiffarray
return array

这将适用于 [3,2,1,4] m = 3 -> [3,3,4], 但不是 [3,5] m = 3 -> [7,5] ([5,5,5] 想要)

我想也许这可以使用动态编程来解决,但不确定如何解决。 任何指针将不胜感激。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)