เราได้รับอาร์เรย์และเราจำเป็นต้องค้นหาองค์ประกอบที่บ่อยที่สุดจากอาร์เรย์นั้น มาดูตัวอย่างกัน
ป้อนข้อมูล
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