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

C++ में गैर-अतिव्यापी अंतराल

मान लीजिए हमारे पास अंतरालों का संग्रह है; शेष अंतरालों को गैर-अतिव्यापी बनाने के लिए हमें कम से कम अंतरालों को निकालना होगा। इसलिए यदि अंतराल [[1,2], [2,3], [3,4], [1,3]] हैं, तो आउटपुट 1 होगा, क्योंकि हमें [1,3] को हटाना होगा अन्य सभी गैर-अतिव्यापी हैं।

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

  • n :=सरणी का आकार

  • अगर n 0 है, तो वापस 0

  • गिनती :=1

  • अंतराल के अंत समय के आधार पर सरणी को क्रमबद्ध करें

  • समाप्ति :=पहले अंतराल की समाप्ति तिथि

  • मैं के लिए 1 से n - 1 की सीमा में

    • यदि गिरफ्तारी का प्रारंभ समय [i]>=अंत, तो

      • समाप्ति:=गिरफ्तारी का समाप्ति समय[i]

      • 1 द्वारा गिनती बढ़ाएं

  • वापसी n - गिनती

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   static bool cmp(vector <int>& a, vector <int>& b){
      return a[1] < b[1];
   }
   int eraseOverlapIntervals(vector<vector<int>>& arr) {
      int n = arr.size();
      if(!n)return 0;
      int cnt = 1;
      sort(arr.begin(), arr.end(), cmp);
      int end = arr[0][1];
      for(int i = 1; i < n; i++){
         if(arr[i][0] >= end){
            end = arr[i][1];
            cnt++;
         }
      }
      return n - cnt;
   }
};
main(){
   vector<vector<int>> v = {{1,2},{1,2},{1,2}};
   Solution ob;
   cout << (ob.eraseOverlapIntervals(v));
}

इनपुट

[[1,2],[1,2],[1,2]]

आउटपुट

2

  1. C++ . में रेखा परावर्तन

    मान लीजिए कि हमारे पास 2D तल पर n बिंदु हैं, हमें यह जांचना है कि क्या y-अक्ष के समानांतर कोई रेखा है जो दिए गए बिंदुओं को सममित रूप से दर्शाती है, दूसरे शब्दों में, जांचें कि क्या कोई ऐसी रेखा मौजूद है जो दी गई रेखा पर सभी बिंदुओं को प्रतिबिंबित करने के बाद मूल बिंदुओं का सेट वही होता है जो प्रतिबि

  1. C++ . में विकर्ण ट्रैवर्स II

    मान लीजिए कि हमारे पास nums नामक सूचियों की एक सूची है, हमें अंकों के सभी तत्वों को विकर्ण क्रम में दिखाना होगा। तो, अगर इनपुट पसंद है तो आउटपुट [1,6,2,8,7,3,9,4,12,10,5,13,11,14,15,16] होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - एक सरणी रिट परिभाषित करें एक 2डी सरणी को परिभाषित

  1. सी ++ में static_cast

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