คำชี้แจงปัญหา
กำหนดอาร์เรย์ของ 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