คำชี้แจงปัญหา
รับอาร์เรย์ที่มีจำนวนเต็มบวก n เราจำเป็นต้องค้นหาจำนวนการดำเนินการขั้นต่ำเพื่อให้องค์ประกอบทั้งหมดเท่ากัน เราทำการบวก คูณ ลบ หรือหารด้วยองค์ประกอบใดก็ได้ในองค์ประกอบอาร์เรย์
ตัวอย่าง
หากอาร์เรย์อินพุต ={1, 2, 3, 4} เราจำเป็นต้องมีการดำเนินการขั้นต่ำ 3 ครั้งเพื่อให้องค์ประกอบทั้งหมดเท่ากัน ตัวอย่างเช่น เราสามารถสร้างองค์ประกอบ 4 โดยการเพิ่ม 3 รายการ
อัลกอริทึม
<ก่อน>1. เลือกองค์ประกอบที่มีความถี่สูงสุด ให้เราเรียกมันว่า 'x'2 ตอนนี้เราต้องดำเนินการ n-x เนื่องจากมีองค์ประกอบ x ที่มีค่าเท่ากันตัวอย่าง
#includeusing เนมสเปซ std;int getMinOperations (int * arr, int n) { แฮช unordered_map; สำหรับ (int i =0;imaxFrequency) { maxFrequency =elem.second; } } return (n - maxFrequency);}int main() { int arr[] ={1, 2, 3, 4}; int n =sizeof(arr) / sizeof(arr[0]); cout <<"การดำเนินการที่จำเป็นขั้นต่ำ =" < เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้
ผลลัพธ์
การดำเนินการที่จำเป็นขั้นต่ำ =3