Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

องค์ประกอบที่พบบ่อยที่สุดในอาร์เรย์ใน C++


เราได้รับอาร์เรย์และเราจำเป็นต้องค้นหาองค์ประกอบที่บ่อยที่สุดจากอาร์เรย์นั้น มาดูตัวอย่างกัน

ป้อนข้อมูล

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