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

सी ++ में ऊंचाई से कतार पुनर्निर्माण


मान लें कि हमारे पास कतार में खड़े लोगों की एक यादृच्छिक सूची है। यदि प्रत्येक व्यक्ति को पूर्णांकों (h, k) की एक जोड़ी द्वारा वर्णित किया जाता है, जहाँ h ऊँचाई है और k उसके सामने उन लोगों की संख्या है, जिनकी ऊँचाई h से अधिक या उसके बराबर है। हमें कतार के पुनर्निर्माण के लिए एक विधि को परिभाषित करना होगा। तो यदि दी गई सरणी [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] की तरह है, तो आउटपुट होगा [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

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

  • निम्न तुलना रणनीति के आधार पर दिए गए सरणी को क्रमबद्ध करें
    • यदि a[0] =b[0], तो a[1]> b[1] लौटाएं, अन्यथा a[0] लौटाएं
  • एक वेक्टर बनाएं जिसे ans कहा जाता है
  • मैं के लिए 0 से नीचे दिए गए सरणी के श्रेणी आकार में
    • उत्तर सरणी में (ans + p[i, 1], p[i] का पहला तत्व) डालें
  • वापसी उत्तर

उदाहरण

आइए हम इसे बेहतर ढंग से समझने के लिए निम्नलिखित कार्यान्वयन को देखें -

#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;
}
bool cmp(vector <int> a, vector <int> b){
   if(a[0] == b[0])return a[1] > b[1];
      return a[0] < b[0];
}
class Solution {
public:
   vector<vector<int>> reconstructQueue(vector<vector<int>>& p) {
      sort(p.begin(), p.end(), cmp);
      vector < vector <int> > ans;
      for(int i = p.size()-1; i>=0; i--){
         ans.insert(ans.begin() + p[i][1], p[i]);
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<vector<int>> v = {{7,0}, {4,4}, {7,1}, {5,0}, {6,1}, {5,2}};
   print_vector(ob.reconstructQueue(v));
}

इनपुट

[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

आउटपुट

[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

  1. सी ++ में static_cast

    static_cast का उपयोग सामान्य/साधारण प्रकार के रूपांतरण के लिए किया जाता है। यह निहित प्रकार के जबरदस्ती के लिए जिम्मेदार कलाकार भी है और इसे स्पष्ट रूप से भी कहा जा सकता है। आपको इसका उपयोग फ्लोट को इंट, चार से इंट आदि में बदलने जैसे मामलों में करना चाहिए। यह संबंधित प्रकार की कक्षाओं को कास्ट कर सक

  1. सी ++ में एक वेक्टर को सॉर्ट करना

    सी ++ में वेक्टर को सॉर्ट करना std ::सॉर्ट() का उपयोग करके किया जा सकता है। इसे हेडर में परिभाषित किया गया है। एक स्थिर प्रकार प्राप्त करने के लिए std::stable_sort का उपयोग किया जाता है। यह बिल्कुल सॉर्ट () जैसा है लेकिन समान तत्वों के सापेक्ष क्रम को बनाए रखता है। आवश्यकता के अनुसार क्विकसॉर्ट (),

  1. सी ++ में वेक्टर कैसे प्रारंभ करें?

    इनिशियलाइज़ेशन वेक्टर कई तरह से किया जा सकता है 1) एक वेक्टर को push_back() विधि द्वारा प्रारंभ करें एल्गोरिदम Begin    Declare v of vector type.    Call push_back() function to insert values into vector v.    Print “Vector elements:”.    for (int