मान लीजिए हमने कर्मचारियों की अनुसूचियों की एक सूची दी है; यह प्रत्येक कर्मचारी के लिए कार्य समय का प्रतिनिधित्व करता है। अब मान लीजिए कि प्रत्येक कर्मचारी के पास गैर-अतिव्यापी अंतरालों की एक सूची है, इन अंतरालों को क्रमबद्ध किया जाता है। हमें सभी कर्मचारियों के लिए सामान्य, सकारात्मक-लंबाई वाले खाली समय का प्रतिनिधित्व करने वाले सीमित अंतरालों की सूची ढूंढनी होगी, और वह भी क्रमबद्ध क्रम में होगा। हम [x, y] के रूप में अंतराल का प्रतिनिधित्व कर रहे हैं, उदाहरण के लिए, शेड्यूल [0][0].स्टार्ट =1, शेड्यूल[0][0].end =2.
इसलिए, यदि इनपुट शेड्यूल =[[[1,2], [5,6]], [[1,3]], [[4,10]]] की तरह है, तो आउटपुट में से एक होगा [[ 3,4]].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक 2डी सरणी को परिभाषित करें v
-
इनिशियलाइज़ i के लिए:=0, जब i <शेड्यूल का आकार, अपडेट (i से 1 तक बढ़ाएँ), करें
-
इनिशियलाइज़ j :=0 के लिए, जब j <शेड्यूल का आकार [i], अपडेट करें (j 1 से बढ़ाएँ), करें
-
वी के अंत में शेड्यूल [i, j] डालें
-
-
-
सरणी को क्रमबद्ध करें v
-
एक 2डी सरणी रेट परिभाषित करें
-
एक सरणी अस्थायी परिभाषित करें:=v[0]
-
इनिशियलाइज़ i:=0 के लिए, जब i
-
अगर अस्थायी [0]
-
रिट के अंत में {temp[1], v[i, 0]} डालें
-
अस्थायी:=वी[i]
-
-
अन्यथा
-
अस्थायी :=(यदि अस्थायी [1]
-
-
-
वापसी रिट
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; void print_vector(vector<vector<auto> > v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << "["; for(int j = 0; j <v[i].size(); j++){ cout << v[i][j] << ", "; } cout << "],"; } cout << "]"<<endl; } class Solution { public: static bool cmp(vector<int> a, vector<int> b){ return a[0] < b[0]; } vector<vector<int>> employeeFreeTime(vector<vector<vector<int>>> schedule) { vector<vector<int>> v; for (int i = 0; i < schedule.size(); i++) { for (int j = 0; j < schedule[i].size(); j++) { v.push_back(schedule[i][j]); } } sort(v.begin(), v.end(), cmp); vector<vector<int>> ret; vector<int> temp = v[0]; for (int i = 0; i < v.size(); i++) { if (temp[0] < v[i][1]) { ret.push_back({temp[1], v[i][0]}); temp = v[i]; } else { temp = temp[1] < v[i][1] ? v[i] : temp; } } return ret; } }; main(){ Solution ob; vector<vector<vector<int>>> v = {{{1,2},{5,6}},{{1,3}},{{4,10}}}; print_vector(ob.employeeFreeTime(v)); }
इनपुट
{{{1,2},{5,6}},{{1,3}},{{4,10}}}
आउटपुट
[[2, 1, ],[2, 1, ],[3, 4, ],[10, 5, ],]