Chúng ta được cung cấp một mảng và chúng ta cần tìm phần tử thường xuyên nhất từ nó. Hãy xem một ví dụ.
Đầu vào
arr = [1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4]
Đầu ra
2
Trong mảng trên, 2 xuất hiện 4 lần, tần suất xảy ra nhiều nhất so với bất kỳ mảng nào khác trong mảng.
Thuật toán - 1
-
Khởi tạo mảng.
-
Khởi tạo bản đồ để lưu trữ tần suất của từng phần tử.
-
Đếm tần suất của từng phần tử và lưu trữ trong bản đồ.
-
Lặp lại bản đồ và tìm phần tử có tần suất xuất hiện nhiều nhất.
- Trả lại phần tử.
Thuật toán - 2
- Khởi tạo mảng.
- Sắp xếp mảng đã cho.
- Duy trì các biến cho số lượng tối đa, kết quả và số phần tử hiện tại.
- Tìm phần tử đếm tối đa bằng cách lặp lại trên mảng.
- Các phần tử giống nhau nằm cạnh nhau.
- Trả lại kết quả.
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong 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; }
Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
2