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
結論
我們討論的第二種方法比第一種方法更容易,並且花費的時間更少。如果您在本教程中有任何疑問,請在評論部分中提出。
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP