เราได้ให้อาร์เรย์ขององค์ประกอบ และเราต้องทำให้ทั้งหมดเท่ากันโดยเพิ่มองค์ประกอบขึ้น 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
บทสรุป
วิธีที่สองที่เราพูดถึงนั้นง่ายกว่าและใช้เวลาน้อยกว่าเมื่อเทียบกับวิธีแรก หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น