Chúng tôi đã cho một mảng các phần tử và chúng tôi phải làm cho tất cả chúng bằng nhau bằng cách tăng các phần tử lên 1. Chúng tôi được phép tăng n - 1 phần tử ở mỗi bước. Mục tiêu của chúng tôi là tính tổng số hoạt động cần thiết để làm cho tất cả các phần tử của mảng bằng nhau.
Ví dụ:nếu bạn lấy danh sách [1, 2, 3], cần ba phép toán để làm cho tất cả các phần tử bằng nhau. Một giải pháp cho vấn đề là. Tìm số có nghĩa nhất ở mỗi bước và tăng các phần tử còn lại lên 1. Hãy viết mã.
Ví dụ
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()
Đầu ra
Nếu bạn chạy chương trình trên, bạn sẽ nhận được kết quả sau.
3
Phương pháp trên mất nhiều thời gian hơn để tính toán cho các mảng lớn. Chúng ta có thể tìm số phép toán bằng cách tìm tổng và phần tử nhỏ nhất của mảng.
- Tìm tổng của mảng.
- Tìm phần tử nhỏ nhất trong số tất cả các phần tử trong mảng.
- In giá trị nhận được từ tổng biểu thức - (độ dài - nhỏ nhất) .
Ví dụ
Xem mã bên dưới.
# 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))
Đầu ra
Nếu bạn chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.
3
Kết luận
Phương pháp thứ hai mà chúng ta đã thảo luận dễ dàng hơn và tốn ít thời gian hơn so với phương pháp đầu tiên. Nếu bạn có bất kỳ nghi ngờ nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.