কম্পিউটার টিউটোরিয়াল

C++-এ উপযুক্ত বয়সের বন্ধু ফ্রেন্ড রিকোয়েস্ট গণনা

মান করুন কিছু লোক ফ্রেন্ড রিকোয়েস্ট করবে। আমরা তাদের বয়স জানি, যা ages[i]-এ সংরক্ষিত। এটি i-তম ব্যক্তির বয়স নির্দেশ করে। এখন A ব্যক্তি B ব্যক্তিকে (B != A) ফ্রেন্ড রিকোয়েস্ট করবেন না যদি নিচের যেকোনো শর্ত সত্য হয় −

  • age[B] <= 0.5 * age[A] + 7
  • age[B] > age[A]
  • age[B] > 100 && age[A] < 100

অন্যথায়, A, B-কে ফ্রেন্ড রিকোয়েস্ট করবেন। মনে রাখবেন যদি A, B-কে রিকোয়েস্ট করে, তবে B আবশ্যকে A-কে রিকোয়েস্ট করবেন না। এবং কেউ নিজেকে ফ্রেন্ড রিকোয়েস্ট করবেন না। আমাদের বের করতে হবে মোট কতগুলো ফ্রেন্ড রিকোয়েস্ট হয়েছে?

যদি বয়স অ্যারে হয় [16,17,18], তবে ফলাফল হবে ২, কারণ রিকোয়েস্টগুলো হবে 17 → 16, 18 → 17।

এটি সমাধান করার জন্য নিচের ধাপগুলি অনুসরণ করুন −

  • ১০০০ আকারের একটি bucket অ্যারে সংজ্ঞায়িত করুন, তারপর ages অ্যারের উপাদানগুলির ফ্রিকোয়েন্সি bucket-এ সংরক্ষণ করুন
  • তারপর bucket এলিমেন্টগুলোর ক্যুমুলেটিভ সম বের করে bucket-এ সংরক্ষণ করুন
  • ret := 0
  • i = 0 থেকে ages অ্যারের আকার - ১ পর্যন্ত
    • x := ages[i], y := (ages[i] / 2) + 7
    • যদি x >= y হয়, তবে
      • ret := bucket[x] - bucket[y]
      • যদি bucket[x] - bucket[y] নন-জিরো হয়, তবে ret ১ কমান
  • ret ফেরত দিন

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int numFriendRequests(vector<int>& ages) {
        vector <int> bucket(1000);
        for(int i = 0; i < ages.size(); i++){
            bucket[ages[i]]++;
        }
        for(int i = 1; i < 1000; i++) bucket[i] += bucket[i - 1];
        int ret = 0;
        for(int i = 0; i < ages.size(); i++){
            int x = ages[i];
            int y = ((ages[i]) / 2) + 7;
            if(x >= y){
                ret += (bucket[x] - bucket[y]);
                if((bucket[x] - bucket[y]))
                    ret--;
            }
        }
        return ret;
    }
};

main(){
    vector<int> v1 = {16, 17, 18};
    Solution ob;
    cout << (ob.numFriendRequests(v1));
}

ইনপুট

[16,17,18]

আউটপুট

2
  1. C++-এ Line Reflection: ২D প্লেনে বিন্দুগুলোর Y-অক্ষ সমান্তরাল প্রতিফলন লাইন আছে কিনা যাচাই করা

  2. C++-এ ডায়াগোনাল ট্রায়ভার্স II

  3. প্রসেস কিল করা (Kill Process) C++-এ

  4. স্কোয়ারেল সিমুলেশন (Squirrel Simulation) C++-এ