当前位置: 首页 > 知识库问答 >
问题:

均衡数组所需的最小转换次数[关闭]

夹谷茂
2023-03-14

给定n个正元素(包括0)的数组。我们只允许执行一个转换,即增加列表中除一个元素外的每个元素。均衡此列表所需的最小转换次数是多少?

例如,< code>n = 3,数组为< code>1,2,3。我们需要3个这样的转换:

2,3,3--

对于< code>n = 4并且列表为< code>1,3,2,4,所需的最小变换数是6

解决这个问题的最佳方法是什么?

共有2个答案

姜博
2023-03-14

如果你意识到你的变换与从一个元素中减去1是一样的,最后一步是将n加到每个元素上,其中n是变换的次数,那么争论起来就容易多了。e、 g 1,2,3-

这当然意味着需要(对于数组,a_i是第i个元素,m是数组中最小的元素)sum_i(a_i-m)转换。

所以你的方法是

m=min(a)
for each (e in a) {
   while (e>m) {
      //transform so that e is reduced by 1
   }
} 
东门奕
2023-03-14

您实际上不需要显示转换,而是找到所需的此类转换的总数。

增加除一个元素之外的所有元素本质上与减少一个元素相同(为了均衡所有元素)。

策略:减少所有非最小元素,直到它们等于最小元素。

例如,如果元素是{x1,x2,x3,x4……xn},则转换的次数将为

let min = min{x1 .. xn}
for(int x : arr){
    // decrement x until x == m
}

转换总数

sum(k = 1 to n)x(k)−n*min{x1,…,xn}

样品运行:

For array = {1,2,3}
sum(k=1 to n) x(k) = (1 + 2 + 3) = 6
n = 3
min = 1
num_transformations = 6 - 3*1 = 3 transformations
 类似资料:
  • 我们有一个 n 个正整数的数组。可接受的做法是将所有元素增加 1 或 2 或 5,但一个元素除外。我们需要找出最小操作数,以使所有数组元素的数量相等。 经过搜索,我找到了一种方法: 找出非最小元素与最小元素之间的所有差异 通过使用硬币找零方法,找到为所有差异找零所需的最小硬币数量 返回所有这些最小硬币数量的总和 但是这种方法对于此测试用例失败: 数组:< code>1,5,5 最小操作数:3 ()

  • 问题是获取和数组中相应的索引,这些索引导致以较小的跳跃结束。例如:将需要s... 我说的跳跃是指跳跃;i、 e需要多少啤酒花。如果您是一个特定的索引,则可以通过该索引中的值进行跳跃。 下面是我在中的实现,它正确地给出了最小的跳转次数,但是我很难用

  • 我最近遇到了一个编码面试问题,似乎找不到答案。问题是这样的。 给定一个整数数组,编写一个函数,返回组织数组所需的最小交换,以便每个相邻元素的差值小于或等于K。 例如 它应该返回1的原因是,通过交换40和30,数组将满足给定的语句,即所有相邻元素之间的间距应在20以内。 我确实试着在谷歌上搜索答案,我想我在其他算法助手网站上找到了一些答案,但无法找到我问题的答案。失败的测试用例有一个数组和,它们应该

  • 问题内容: 我们获得了二维网格单元,每个单元可能包含也可能不包含怪物。 我们将获得包含怪物的单元格列表。 在一次攻击中,我们可以杀死排成一列或一列的所有怪物。我们需要告诉消灭所有怪物所需的最小攻击次数。 限制条件: 例: 输入: 输出: 如何解决这个问题。 问题答案: 可以将其建模为图问题。 为每个有怪物的行和列创建一个图形节点。如果该行和该列上有怪物,则连接节点。 这是一个二部图,您想要做最小的

  • NowCoder 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 lo

  • 我得到了一个值大于或等于0的整数数组,例如:[5,6,0,4,2,4,1,0,0,4] 我被要求实现一种算法,以从索引0开始的最短“跃点”数遍历数组,其中遍历定义如下: - 如果我选择跳到索引3,它包含值4,我可以从我当前的索引(3)下一次跳到4个点-所以我现在考虑索引4到7作为序列中的下一步。 我的算法必须确定一个最小跳数解,但可以在具有相同跳数的解中任意选择。 对于本示例,以下内容将是有效输出