algorithm - 数组操作(需要最少的删除)

标签 algorithm

给定一个正整数数组,我可以将任何元素减少任意数量,使得所有剩余的非零元素都相等。

我必须找到最小值,它是发生的所有减少的总和。

例如:1 1 1 1 2
答案:1(仅将最后一个元素减 1)。

例如:25 23 1 2
Ans:5(一种可能的方法是将 25 减为 23,将 1 减为 0,将 2 减为 0。所有减法操作后数组为 23 23 0 0,其中所有非零元素都相等。)

我尝试了在数组中找到最小值然后将所有其他元素等同于该值的方法。但这种方法在第二种情况下失败了。非常感谢您对此提供的任何帮助。

最佳答案

你的方法很好,但是你需要考虑更多的目标值选择。

它可以是数组中的任何值,因此只需依次尝试所有值即可。这将是一个复杂度为 O(n^2) 的算法。

如果你想走得更快,你可以先对条目进行排序。然后你可以很容易地依次计算每个目标值的成本(因为你知道你需要将当前位置之前的所有元素减少到 0,并将当前位置之后的所有元素减少到目标值,所以总成本是所有元素减去当前值乘以超出当前位置的元素数)

关于algorithm - 数组操作(需要最少的删除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526573/

相关文章:

java - 在单词列表中查找拼写错误

c++ - 用于(这个特定的)过期缓存的正确数据结构?

algorithm - 使用 map reduce 使用 bfs 遍历图形的有效方法是什么?

java - 在解压缩要传递给工作池的文件期间打开流的适当时间

c++ - 二叉搜索树中的删除函数

c++ - 雷达安装 UVA

algorithm - 解决钉洞游戏

用于 PHP 应用程序的基于 Java 的库 Aho-Corasick 字符串匹配算法

algorithm - 汇编中的 Fletcher 算法

algorithm - 填充二维数组的空隙