Computer >> Máy Tính >  >> Lập trình >> C ++

Phần tử thường gặp nhất trong một mảng trong C ++

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