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

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

โจทย์

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

อินพุต

arr = [1, 2, 3, 3, 2, 2, 1, 1, 2, 3, 4]

เอาต์พุต

2

ในอาร์เรย์ข้างต้น 2 ปรากฏ 4 ครั้ง ซึ่งมากที่สุดในอาร์เรย์

อัลกอริธึม - 1

  • กำหนดอาร์เรย์
  • กำหนดแมป (map) เพื่อเก็บความถี่ของแต่ละองค์ประกอบ
  • นับความถี่ของแต่ละองค์ประกอบและเก็บในแมป
  • วนลูปผ่านแมปและหาองค์ประกอบที่มีความถี่มากที่สุด
  • คืนค่าองค์ประกอบนั้น

อัลกอริธึม - 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