मान लीजिए कि हमारे पास एक क्रमबद्ध पूर्णांक सरणी संख्या है, तत्वों की श्रेणी समावेशी श्रेणी [निचला, ऊपरी] में है, हमें लापता श्रेणियां ढूंढनी होंगी।
इसलिए, यदि इनपुट nums =[0, 1, 3, 50, 75] की तरह है, और निचला मान 0 है और ऊपरी मान 99 है, तो आउटपुट ["2", "4->49", " 51->74", "76->99"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एक सरणी संख्या परिभाषित करें
-
एक सेट को परिभाषित करें v
-
इनिशियलाइज़ i:=0 के लिए, जब i
-
यदि t[i] v में नहीं है, तो -
-
t[i] को v में डालें
-
अंकों के अंत में t[i] डालें
-
-
-
रिट नामक एक सरणी को परिभाषित करें
-
वक्र :=निचला
-
मैं :=0, n :=अंकों का आकार
-
जबकि curr <=ऊपरी, करें -
-
यदि i
-
(मैं 1 से बढ़ाइए)
-
(कर्र 1 से बढ़ाएँ)
-
-
अन्यथा
-
अस्थायी :=कर्व को स्ट्रिंग में बदलें
-
(कर्र 1 से बढ़ाएँ)
-
यदि i
-
रिट के अंत में अस्थायी डालें
-
निम्नलिखित भाग पर ध्यान न दें, अगले पुनरावृत्ति पर जाएं
-
-
अन्यथा
-
अगर मैं n के समान हूं, तो -
-
अगर वक्र <=ऊपरी, तो -
-
अस्थायी :="->"
-
अस्थायी:=अस्थायी ऊपरी स्ट्रिंग के रूप में संयोजित करें
-
वक्र:=ऊपरी + 1
-
-
रिट के अंत में अस्थायी डालें
-
-
अन्यथा
-
अस्थायी :="->"
-
वक्र:=अंक [i]
-
अस्थायी :=अस्थायी संयोजन (कर्र -1) स्ट्रिंग के रूप में
-
वक्र:=अंक [i]
-
रिट के अंत में अस्थायी डालें
-
-
-
-
-
वापसी रिट
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#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; } class Solution { public: vector<string< findMissingRanges(vector<int<& t, int lower, int upper) { vector <int< nums; set <long long int> v; for(int i = 0; i < t.size(); i++){ if(!v.count(t[i])){ v.insert(t[i]); nums.push_back(t[i]); } } vector < string > ret; long long int curr = lower; int i = 0; int n = nums.size(); while(curr <= upper){ if(i < n && nums[i] == curr){ i++; curr++; } else{ string temp = to_string(curr); curr++; if(i < n && nums[i] == curr){ ret.push_back(temp); continue; } else{ if(i == n){ if(curr <= upper){ temp += "->"; temp += to_string(upper); curr = (long long int )upper + 1; } ret.push_back(temp); } else{ temp += "->"; curr = nums[i]; temp += to_string(curr - 1); curr = nums[i]; ret.push_back(temp); } } } } return ret; } }; main(){ Solution ob; vector<int< v = {0,1,3,50,75}; print_vector(ob.findMissingRanges(v, 0, 99)); }
इनपुट
{0,1,3,50,75}, 0, 99
आउटपुट
[2, 4->49, 51->74, 76->99, ]