เราได้รับอาร์เรย์และเราจำเป็นต้องค้นหาองค์ประกอบที่บ่อยที่สุดจากอาร์เรย์นั้น มาดูตัวอย่างกัน
ป้อนข้อมูล
arr = [1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4]
ผลผลิต
2
ในอาร์เรย์ด้านบน 2 เกิดขึ้น 4 ครั้งซึ่งบ่อยที่สุดกว่าอาร์เรย์อื่น ๆ
อัลกอริทึม - 1
-
เริ่มต้นอาร์เรย์
-
เริ่มต้นแผนที่เพื่อเก็บความถี่ของแต่ละองค์ประกอบ
-
นับความถี่ของแต่ละองค์ประกอบและเก็บไว้ในแผนที่
-
วนซ้ำบนแผนที่และค้นหาองค์ประกอบที่มีความถี่มากที่สุด
- คืนองค์ประกอบ
อัลกอริทึม - 2
- เริ่มต้นอาร์เรย์
- จัดเรียงอาร์เรย์ที่กำหนด
- รักษาตัวแปรสำหรับการนับสูงสุด ผลลัพธ์ และจำนวนองค์ประกอบปัจจุบัน
- ค้นหาองค์ประกอบการนับสูงสุดโดยวนซ้ำบนอาร์เรย์
- ธาตุเดียวกันอยู่เคียงข้างกัน
- ส่งคืนผลลัพธ์
การนำไปใช้
ต่อไปนี้เป็นการนำอัลกอริธึมข้างต้นไปใช้ใน C++
#include <bits/stdc++.h> using namespace std; int getMostFrequentNumber(int arr[], int n) { unordered_map<int, int> elements; for (int i = 0; i < n; i++) { elements[arr[i]]++; } int maxCount = 0, res = -1; for (auto i : elements) { if (maxCount < i.second) { res = i.first; maxCount = i.second; } } return res; } int main() { int arr[] = { 1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4 }; int n = 11; cout << getMostFrequentNumber(arr, n) << endl; return 0; }
ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
2