मान लीजिए कि हमारे पास एक सरणी ए है। कुछ तत्व हैं। कुछ तत्व सामान्य हैं। हमें एक ऐसा तत्व वापस करना होगा जो सरणी में 25% से अधिक रिक्त स्थान प्रदर्शित कर रहा हो। तो अगर ए =[1, 2, 4, 4, 4, 4, 5, 5, 6, 6, 7, 7], यहाँ 4 चार बार आया है। यह 12 के 25% से अधिक है (सरणी का आकार)
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- तत्वों को पढ़ें और उनकी संबंधित आवृत्तियों को संग्रहीत करें
- यदि आवृत्ति सरणी आकार के 25% से अधिक है, तो परिणाम लौटाएं।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int findSpecialInteger(vector<int>& arr) {
int n = arr.size();
int req = n / 4;
unordered_map <int, int> m;
int ans = -1;
for(int i = 0; i < n; i++){
m[arr[i]]++;
if(m[arr[i]] > req)ans = arr[i];
}
return ans;
}
};
main(){
Solution ob;
vector<int> c = {1,2,4,4,4,4,5,5,6,6,7,7};
cout << ob.findSpecialInteger(c);
} इनपुट
[1,2,4,4,4,4,5,5,6,6,7,7]
आउटपुट
4