কম্পিউটার

C++ এ ক্যান্ডি বিতরণ করুন


ধরুন আমাদের কাছে জোড় দৈর্ঘ্যের একটি অ্যারে আছে, এখানে এই অ্যারের বিভিন্ন সংখ্যা বিভিন্ন ধরণের ক্যান্ডির প্রতিনিধিত্ব করবে। এখন প্রতিটি সংখ্যার অর্থ সংশ্লিষ্ট ধরণের একটি ক্যান্ডি। আমাদের ভাই ও বোনের মধ্যে সমানভাবে মিষ্টি বিতরণ করতে হবে। বোনটি পেতে পারে এমন সর্বাধিক সংখ্যক ক্যান্ডি আমাদের খুঁজে বের করতে হবে৷

সুতরাং, যদি ইনপুটটি [1,1,2,3] এর মত হয়, তাহলে আউটপুট 2 হবে যেন আমরা মনে করি বোনের ক্যান্ডি [2,3] এবং ভাইয়ের ক্যান্ডি [1,1] আছে। এখন বোনের দুটি ভিন্ন ধরণের ক্যান্ডি আছে, ভাইয়ের কাছে কেবল এক ধরণের ক্যান্ডি রয়েছে৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি সেট s

    সংজ্ঞায়িত করুন
  • আরম্ভ করার জন্য i :=0, যখন i <ক্যান্ডির আকার, আপডেট করুন (i 1 দ্বারা বাড়ান), করবেন −

    • s

      -এ ক্যান্ডি[i] ঢোকান
  • ন্যূনতম 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

  1. C++ এ n-আরি ট্রিতে ইভেন সাইজ সাবট্রি

  2. C++ এ অ্যারে ক্ষয় কি?

  3. C++ এ অপারেটরের সাইজ কি?

  4. পাইথনে মানুষের কাছে ক্যান্ডি বিতরণ করুন