Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จำนวนการดำเนินการที่จำเป็นในการทำให้องค์ประกอบอาร์เรย์ทั้งหมดเท่ากันใน 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

วิธีการข้างต้นใช้เวลาในการคำนวณอาร์เรย์ขนาดใหญ่มากขึ้น เราสามารถหาจำนวนการดำเนินการได้โดยการหาผลรวมและองค์ประกอบที่เล็กที่สุดของอาร์เรย์

  • หาผลรวมของอาร์เรย์
  • ค้นหาองค์ประกอบที่เล็กที่สุดในอาร์เรย์
  • พิมพ์ค่าที่ได้รับจากผลรวมนิพจน์ - (ความยาว - น้อยที่สุด) .

ตัวอย่าง

ดูโค้ดด้านล่าง

# 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

บทสรุป

วิธีที่สองที่เราพูดถึงนั้นง่ายกว่าและใช้เวลาน้อยกว่าเมื่อเทียบกับวิธีแรก หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น