Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में उपयुक्त आयु के मित्र

मान लीजिए कुछ लोग फ्रेंड रिक्वेस्ट करेंगे। हम उनकी उम्र जानते हैं, ये युगों में संग्रहीत हैं [i]। तो यह इंगित करता है कि ith व्यक्ति की आयु। अब ए ए नॉट फ्रेंड रिक्वेस्ट व्यक्ति बी (बी! =ए) यदि निम्न में से कोई भी शर्त सत्य है -

  • आयु[बी] <=0.5 * आयु[ए] + 7
  • उम्र[बी]>आयु[ए]
  • आयु[बी]> 100 &&उम्र[ए] <100

अन्यथा, ए फ्रेंड रिक्वेस्ट बी करेगा। आप विचार कर सकते हैं कि अगर ए बी से अनुरोध करता है, बी जरूरी नहीं कि ए का अनुरोध करे। और साथ ही, लोग खुद से फ्रेंड रिक्वेस्ट नहीं करेंगे। तो हमें यह पता लगाना होगा कि कुल कितने मित्र अनुरोध किए गए हैं?

मान लीजिए यदि आयु सरणी [16,17,18] की तरह है, तो परिणाम 2 होगा, क्योंकि अनुरोध 17 -> 16, 18 -> 17 होंगे।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • 1000 आकार की एक सरणी बकेट परिभाषित करें, फिर आयु सरणी तत्वों की आवृत्ति को बकेट में संग्रहीत करें।
  • फिर बकेट एलिमेंट के संचयी योग को बकेट में ढूंढें और स्टोर करें
  • रिट:=0
  • मैं के लिए 0 से आयु वर्ग के आकार के लिए - 1
    • x :=उम्र [i], y :=(आयु[i] / 2) + 7
    • यदि x>=y, तो
      • रिट:=बकेट[x] - बकेट[y]
      • अगर बकेट[x] - बकेट[y] शून्य नहीं है, तो रिट को 1 से घटाएं
  • रिटर्न रिट।

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

#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++ . में विकर्ण ट्रैवर्स II

    मान लीजिए कि हमारे पास nums नामक सूचियों की एक सूची है, हमें अंकों के सभी तत्वों को विकर्ण क्रम में दिखाना होगा। तो, अगर इनपुट पसंद है तो आउटपुट [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक सरणी रिट परिभाषित करें एक 2डी सरणी को परिभाषित

  1. सी ++ में प्रक्रिया को मारें

    मान लीजिए कि हमारे पास n प्रक्रियाएं हैं, यहां प्रत्येक प्रक्रिया की एक विशिष्ट आईडी होती है जिसे PID या प्रक्रिया आईडी कहा जाता है और उसका PPID (पैरेंट प्रोसेस आईडी) भी होता है। प्रत्येक प्रक्रिया में केवल एक पैरेंट प्रक्रिया होती है, लेकिन इसमें एक या अधिक चाइल्ड प्रक्रियाएं हो सकती हैं। यह एक प

  1. सी ++ में गिलहरी सिमुलेशन

    एक पेड़, एक गिलहरी, और कई नट हैं। स्थितियों को 2डी ग्रिड में कोशिकाओं द्वारा दर्शाया जाता है। आपका लक्ष्य गिलहरी के लिए सभी नटों को इकट्ठा करने और उन्हें एक-एक करके पेड़ के नीचे रखने के लिए न्यूनतम दूरी का पता लगाना है। गिलहरी एक समय में केवल एक अखरोट ले सकती है और चार दिशाओं में - ऊपर, नीचे, बाएँ औ