使用Python编写的查找使数组相等的最小操作程序

使用Python编写的查找使数组相等的最小操作程序

假设我们有一个值n,考虑一个包含n个元素的数组nums,其中对于所有i,arr[i] = (2*i)+1。现在,在一次操作中,我们可以选择两个索引x和y,其中0 <= x,y < n,并从nums[x]中减去1并将1添加到nums[y]中。我们必须使数组的所有元素相同。因此,如果我们有n,我们必须找到使nums所有元素相同所需的最小操作次数。

因此,如果输入是像n = 4这样的,则输出将为4,因为对于n,数组为[1,3,5,7],现在在第一次操作后,我们可以使数组像[2,3,5,6],在第二次操作后,我们可以使其像[3,3,5,5],然后在第三次操作后[4,3,4,5],最后[4,4,4,4],现在所有元素都相同了。

要解决这个问题,我们将遵循以下步骤:

  • ans:=0

  • 如果n与1相同,则

    • 返回ans
  • q:=(n/2)-1的商

  • j:= 1

  • 当q>=0时执行以下操作:

    • ans:=ans+(n-j)

    • q:=q-1

    • j:=j+2

  • 返回ans

让我们看以下实现以更好地理解。

示例

def solve(n):
   ans=0
   if n==1:
      return ans
   q=(n//2)-1
   j=1
   while q>=0:
      ans=ans+(n-j)
      q-=1
      j+=2
   return ans
n = 4
print(solve(n))

输入

4

输出

4

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程