Python中使所有数组元素相等的所需操作次数
我们给定一个元素数组,我们必须通过将元素递增 1 来使它们全部相等。我们允许在每个步骤递增 n - 1 个元素。我们的目标是计算使所有数组元素相等所需的总操作次数。
例如,如果您取列表 [1, 2, 3],则需要三个操作才能使所有元素相等。解决这个问题的一种方法是:在每一步找到最大的数字,并将其余元素递增 1。让我们编写代码。
示例
def main(): # intializing the array arr = [1, 2, 3] # initializing operations count to 0 no_of_operations = 0 flag = 0 # performing the operations on array to make them equal while not are_equal(arr): flag = 1 # finding the maximum from the list maximum = max(arr) # incrementing all the elements except maximum for i in range(len(arr)): if arr[i] != maximum: arr[i] += 1 # incrementing the operations count by 1 no_of_operations += 1 print(no_of_operations) if flag == 0 else print(no_of_operations + 1) # checking whether all the elements are equal or not def are_equal(arr): global no_of_operations for i in range(len(arr) - 1): if arr[i] != arr[i + 1]: return False return True if __name__ == '__main__': main()
输出
如果您运行上述程序,您将得到以下结果。
3
对于大型数组,上述方法计算时间较长。我们可以通过查找数组的总和和最小元素来找到操作次数。
- 找到数组的总和。
- 找到数组中所有元素中最小的元素。
- 打印表达式 sum - (length - smallest) 得到的值。
示例
请看下面的代码。
# initializing an array arr = [1, 2, 3] # length length = len(arr) # sum of element fo the array elements_sum = sum(arr) # smallest among all the elements smallest = min(arr) # calculating the number of operations print(elements_sum - (length * smallest))
输出
如果您运行上述代码,您将得到以下结果。
3
结论
我们讨论的第二种方法比第一种方法更容易,并且花费的时间更少。如果您在本教程中有任何疑问,请在评论部分中提出。
广告