微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

问题: 给定一个包含 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 举报,一经查实,本站将立刻删除。