मान लीजिए कि हमारे पास एक क्रमबद्ध पूर्णांक सरणी संख्या है, तत्वों की श्रेणी समावेशी श्रेणी [निचला, ऊपरी] में है, हमें लापता श्रेणियां ढूंढनी होंगी।
इसलिए, यदि इनपुट 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, ]