मान लीजिए कि हमारे पास सम लंबाई वाली एक सरणी है, यहां इस सरणी में अलग-अलग संख्याएं विभिन्न प्रकार की कैंडीज का प्रतिनिधित्व करेंगी। अब प्रत्येक संख्या का अर्थ संबंधित प्रकार की एक कैंडी है। हमें भाई-बहन को समान मात्रा में कैंडी बांटनी है। हमें बहन को मिलने वाली कैंडीज की अधिकतम संख्या का पता लगाना होगा।
इसलिए, यदि इनपुट [1,1,2,3] जैसा है, तो आउटपुट 2 होगा जैसे कि हम मानते हैं कि बहन के पास कैंडी है [2,3] और भाई के पास कैंडीज [1,1] है। अब बहन के पास दो अलग-अलग तरह की मिठाइयाँ हैं, भाई के पास एक ही तरह की मिठाइयाँ हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक सेट को परिभाषित करें
-
प्रारंभ करने के लिए i:=0, जब i <कैंडीज का आकार, अद्यतन करें (i से 1 तक बढ़ाएं), करें -
-
कैंडीज [i] को s में डालें
-
-
कम से कम s का आकार और कैंडी का आकार / 2
. लौटाएं
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: int distributeCandies(vector<int>& candies){ unordered_set<int> s; for (int i = 0; i < candies.size(); i++) s.insert(candies[i]); return min(s.size(), candies.size() / 2); } }; main(){ Solution ob; vector<int> v = {1,1,2,3}; cout << (ob.distributeCandies(v)); }
इनपुट
{1,1,2,3}
आउटपुट
2