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

C++ में मीटिंग रूम्स II - न्यूनतम कॉन्फ्रेंस रूम गिनें


समस्या विवरण

मान लीजिए मीटिंग समय अंतराल की एक सरणी है। दो समय प्रारंभ और समाप्ति समय [[s1,e1],[s2,e2],...] हैं और प्रत्येक जोड़ी नियम (si < ei) को संतुष्ट करती है। हमें आवश्यक न्यूनतम कॉन्फ्रेंस रूम की संख्या ढूंढनी है।

उदाहरण के लिए, यदि इनपुट [[0, 30], [5, 10], [15, 20]] है, तो आउटपुट 2 होगा।

समाधान दृष्टिकोण

मिन-हीप (प्रायोरिटी कतार) का उपयोग करके ओवरलैपिंग मीटिंग ट्रैक करें:

  1. एक प्रायोरिटी कतार pq परिभाषित करें (समाप्ति समय के आधार पर मिन-हीप)
  2. अंतराल सरणी को सॉर्ट करें
  3. ret := 0
  4. प्रत्येक अंतराल के लिए:
    • जब तक pq खाली नहीं है और pq का शीर्ष तत्व <= वर्तमान अंतराल का प्रारंभ समय:
      • pq से हटाएं (मीटिंग समाप्त हो गई)
    • वर्तमान अंतराल को pq में डालें
    • ret = max(ret, pq का आकार) अपडेट करें
  5. ret लौटाएं

C++ कार्यान्वयन

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

struct Comparator{ 
    bool operator()(vector <int>& a, vector <int>& b){ 
        return !(a[1] < b[1]); 
    } 
}; 

class Solution { 
public: 
    static bool cmp(vector <int> a, vector <int> b){ 
        return (a[1] < b[1]); 
    } 
    
    int minMeetingRooms(vector<vector<int>>& intervals) { 
        priority_queue<vector<int>, vector<vector<int>>, Comparator> pq; 
        sort(intervals.begin(), intervals.end()); 
        int ret = 0; 
        for (int i = 0; i < intervals.size(); i++) { 
            while (!pq.empty() && pq.top()[1] <= intervals[i][0]) 
                pq.pop(); 
            pq.push(intervals[i]); 
            ret = max(ret, (int)pq.size()); 
        } 
        return ret; 
    } 
}; 

int main(){ 
    vector<vector<int>> v = {{0, 30}, {5, 10}, {15, 20}}; 
    Solution ob; 
    cout << (ob.minMeetingRooms(v)); 
    return 0;
}

इनपुट

{{0, 30}, {5, 10}, {15, 20}}

आउटपुट

2
  1. C++ में डायगोनल ट्रैवर्स II C++ में डायगोनल ट्रैवर्स II

    मान लीजिए हमारे पास nums नामक लिस्ट ऑफ लिस्ट है, हमें nums के सभी एलिमेंट्स को डायगोनल क्रम में दिखाना है।इसलिए, यदि इनपुट हैतो आउटपुट होगा [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16]इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:एक ऐरे ret परिभाषित करेंएक 2D ऐरे v परिभाषित करेंi := 0 से शुरू करें,

  1. C++ में प्रोसेस मारें C++ में प्रोसेस मारें

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

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

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