Computer >> Máy Tính >  >> Lập trình >> Python

Số lượng hoạt động cần thiết để làm cho tất cả các phần tử mảng bằng nhau trong Python


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.