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

使所有数组元素相等的最小增量-其他操作数

吕高寒
2023-03-14

我正在阅读这个问题的极客为极客网站。

Examples:

Input : arr[] = {1, 2, 3}
Output : Minimum Operation = 3
Explanation : 
operation | increased elements | after increment
    1     |    1, 2            | 2, 3, 3
    2     |    1, 2            | 3, 4, 3
    3     |    1, 3            | 4, 4, 4

Input : arr[] = {4, 3, 4}
Output : Minimum Operation = 2
Explanation : 
operation | increased elements | after increment
     1    |    1, 2           | 5, 4, 4
     2    |    2, 3           | 5, 5, 5

共有1个答案

慕宜民
2023-03-14

编辑1:为了更好地与这个解决方案相关,提到用户Dukeling在他的评论中说过的话是很好的。即增加除最大元素外的所有其他元素,类似于只减少最大元素。

现在,想象一下你正试图把许多砖柱弄平。每一柱砖可以是不同级别的:

为了整平所有的砖块柱,你总是选择最高的一个柱,一次移走一个砖块。

min x number of columns = all the red bricks (to be remained untouched)

sum of all bricks - number of red bricks = all yellow bricks 

因此,您得到了公式:

minOperation = sum - (n * small) 

黄色数=使所有数组元素相等所需的最小操作数

 类似资料:
  • 给定两个序列和,长度相同。在每个步骤中,您可以设置if

  • 给你一个整数列表,长度为偶数。考虑这样一个操作,您在nums中选择任意数字,并用[1,max(nums)]之间的值更新它。返回所需的操作数,使得对于每个i,nums[i]+nums[n-1-i]等于相同的数。问题可以贪婪地解决。 注意:n是数组的大小,max(nums)是nums中的最大元素。 null 设i=0,nums[0]+nums[6-1-0]=4。 i=1,nums[1]+nums[6-

  • 1.索引x处元素可以在一次移动中直接移动到x+1,x+2位置或x-1,x-2位置,之后移动计数将增加。 例如,在数组中,最小移动将为31: 索引4处的所有8个元素可以在总共16次移动中移动到索引0(因为所有8个元素都需要2次移动)。移动:16. 索引5中的3个元素可以在3步中移动到索引3(3个元素每步移动1步),索引5中剩余的5个元素可以在10步中移动到索引2(5个元素每步移动2步,所以总共移动1

  • 给定任何自然数数组,例如:[2,1,2,3]查找数组是否可以转换为Max数组(打印-“是”)或如果不能(打印-“否”) 使其成为最大数组 - 将数组的每个元素转换为等于其最大元素。在上面的例子中,它将是[3,3,3,3],但是通过遵循这些规则 - 一次将任何两个元素增加1(正好是2个元素。不能一次增加一个或多个元素) 多次执行此操作,直到将每个元素转换为最大元素(如果可能,请打印“YES”,否则打

  • 我有这个问题: 您将获得一个整数 A 和一个整数 k 的数组。您可以将 A 的元素递减到 k 次,目标是生成一个元素都相等的连续子数组。返回可以用这种方式生成的最长的连续子数组的长度。 例如,如果 A 是 [1,7,3,4,6,5] 并且 k 是 6,那么您可以生成 [1,7,3,4-1,6-1-1-1,5-1-1] = [1,7,3,3,3,3],因此您将返回 4。 最佳解决方案是什么?

  • 我看到一个问题,要求它找到所有相邻子阵列的最小值。例如,对于数组A=[1,2,3],答案将是一个包含[1,2,3,1,2,1]的数组B<怎么做- 我所做的是,构建了一个段树,但是它不包含所有连续子数组的最小值。 我也不认为我可以使用“脱钩”,因为我不必在特定长度的子数组中找到最小值。 那么,我如何获得所有连续子阵列(B阵列)的最小值?