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

C++ में मीटिंग शेड्यूलर

मान लीजिए कि हमारे पास उपलब्धता समय स्लॉट दो लोगों के स्लॉट 1 और स्लॉट 2 और एक मीटिंग अवधि डी है, हमें उन दोनों के लिए काम करने वाला सबसे पुराना समय स्लॉट ढूंढना है और अवधि डी है। यदि कोई सामान्य समय स्लॉट नहीं है जो आवश्यकताओं को पूरा करता है, तो एक खाली सरणी दिखाएं। यहां एक टाइम स्लॉट का प्रारूप दो तत्वों [प्रारंभ, अंत] की एक सरणी है जो प्रारंभ से अंत तक एक समावेशी समय सीमा का प्रतिनिधित्व करता है। हम यह मान सकते हैं कि एक ही व्यक्ति के दो उपलब्धता स्लॉट एक दूसरे के साथ प्रतिच्छेद नहीं करते हैं। अर्थात्, एक ही व्यक्ति के किन्हीं दो टाइम स्लॉट्स [s1, e1] और [s2, e2] के लिए, या तो s1> e2 या s2> e। इसलिए यदि इनपुट s1 =[[10,50], [60,120], [140,210]] और s2 =[[0,15], [60,70]] और अवधि =8 जैसा है, तो आउटपुट होगा [ 60,68].

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

  • i :=0 और j :=0, एक एरे बनाएं ans, s1 और s2 सॉर्ट करें।
  • जबकि मैं
  • अंत :=s1 का मिनट[i, 1] और s2[j, 1]
  • प्रारंभ :=s1 का मिनट[i, 0] और s2[j, 0]
  • यदि अंत - प्रारंभ>=अवधि, तो
    • उत्तर सरणी में प्रारंभ और (प्रारंभ + अवधि) डालें, और उत्तर वापस करें।
  • अन्यथा जब s1[i, 1]
  • अन्यथा j को 1 से बढ़ाएं
  • वापसी उत्तर
  • आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

    उदाहरण

    #include <bits/stdc++.h>
    using namespace std;
    void print_vector(vector<auto> v){
       cout << "[";
       for(int i = 0; i<v.size(); i++){
          cout << v[i] << ", ";
       }
       cout << "]"<<endl;
    }
    using namespace std;
    bool cmp(vector <int> a, vector <int> b){
       return a[0]<b[0];
    }
    class Solution {
       public:
       vector<int> minAvailableDuration(vector<vector<int>>& slots1, vector<vector<int>>& slots2, int duration) {
          int i =0;
          int j = 0;
          vector <int> ans;
          sort(slots1.begin(),slots1.end(),cmp);
          sort(slots2.begin(),slots2.end(),cmp);
          while(i<slots1.size() && j<slots2.size()){
             int end = min(slots1[i][1],slots2[j][1]);
             int start = max(slots1[i][0],slots2[j][0]);
             if(end-start>=duration){
                ans.push_back(start);
                ans.push_back(start+duration);
                return ans;
             } else if(slots1[i][1]<slots2[j][1]) {
                i++;
             } else {
             j++;}
          }
          return ans;
       }
    };
    main(){
       vector<vector<int>> v = {{10,50},{60,120},{140,210}};
       vector<vector<int>> v1 = {{0,15},{60,70}};
       Solution ob;
       print_vector(ob.minAvailableDuration(v, v1, 8));
    }

    इनपुट

    [[10,50],[60,120],[140,210]]
    [[0,15],[60,70]]
    8

    आउटपुट

    [60, 68, ]

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