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

การดำเนินการลบขั้นต่ำเพื่อทำให้องค์ประกอบทั้งหมดของอาร์เรย์เหมือนกันใน C ++


คำชี้แจงปัญหา

กำหนดอาร์เรย์ของ n องค์ประกอบเพื่อให้องค์ประกอบสามารถทำซ้ำได้ เราสามารถลบองค์ประกอบจำนวนเท่าใดก็ได้จากอาร์เรย์ ภารกิจคือการหาจำนวนองค์ประกอบขั้นต่ำที่จะลบออกจากอาร์เรย์เพื่อให้เท่ากัน

arr[] ={10, 8, 10, 7, 10, -1, -4, 12}

เราต้องลบองค์ประกอบที่ไฮไลต์ 5 องค์ประกอบเพื่อให้องค์ประกอบอาร์เรย์ทั้งหมดเหมือนกัน

อัลกอริทึม

<ก่อน>1. นับความถี่ของแต่ละองค์ประกอบ2 ค้นหาความถี่สูงสุดระหว่างความถี่ ให้เราเรียกสิ่งนี้ว่า maxFrequncy3 องค์ประกอบที่จะลบ:n – maxFrequecy โดยที่ n คือขนาดของอาร์เรย์

ตัวอย่าง

#include #include 
#include #define SIZE(arr) (sizeof(arr)/sizeof(arr[0])) โดยใช้เนมสเปซ std;int minDeleteOperations(int *arr, int n){ unordered_map ความถี่; int maxFrequency =INT_MIN; สำหรับ (int i =0; i วินาที); } return (n - maxFrequency);}int main(){ int arr[] ={10, 8, 10, 7, 10, -1, 9, 4}; cout <<"จำเป็นต้องลบ:" < 

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ต่อไปนี้ -

จำเป็นต้องลบ:5