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

ओवरलैप हटाने के लिए हटाए जाने वाले न्यूनतम अंतराल की संख्या का प्रोग्राम C++ में


मान लीजिए हमारे पास अंतराल का एक सेट है; हमें उन न्यूनतम अंतरालों की संख्या ढूंढनी है जिन्हें हटाया जाना चाहिए ताकि बाकी अंतराल गैर-ओवरलैपिंग हों। इसलिए यदि अंतराल [[8,10],[3,5],[6,9]] हैं, तो आउटपुट 1 होगा, क्योंकि हमें [6,9] को हटाना होगा ताकि बाकी सभी गैर-ओवरलैपिंग हों।

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

  • n := सरणी का आकार
  • यदि n 0 है, तो 0 लौटाएं
  • count := 1
  • अंतराल के अंत समय के आधार पर सरणी को सॉर्ट करें
  • end := पहले अंतराल का अंत समय
  • i को 1 से n-1 तक रेंज में
    • यदि arr[i] का प्रारंभ समय >= end, तो
      • end := arr[i] का अंत समय
      • count को 1 से बढ़ाएं
  • n - count लौटाएं

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

उदाहरण

#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 = {{8,10},{3,5},{6,9}};    Solution ob;    cout << (ob.eraseOverlapIntervals(v)); }

इनपुट

{{8,10},{3,5},{6,9}}

आउटपुट

1

  1. - C++ में nवां हर्माइट नंबर ढूंढना

    इस समस्या में, हमें एक पूर्णांक मान N दिया जाता है। हमारा कार्य nवां हर्माइट नंबर ढूंढने के लिए एक प्रोग्राम बनाना है।हर्माइट नंबर एक संख्या है जो हर्माइट बहुपद का मान है जब तर्क 0 होते हैं।Nवां हर्माइट नंबर है HN = (-2) * (N - 1) * H(N-2) आधार मान हैं H0 = 1 और H1 = 0।हर्माइट अनुक्रम है – 1, 0, -2,

  1. - C++ में एक संख्या d जोड़ने के बाद न्यूनतम संभावित अंक योग ज्ञात करें

    इस समस्या में, हमें दो संख्याएँ n और d दी गई हैं। हमारा कार्य d का k-वाँ गुणक n में जोड़कर अंकों के योग को न्यूनतम करना है।समस्या विवरण - हमें n में d के k-वें गुणक को जोड़कर अंकों के योग को न्यूनतम करना है।आइए एक उदाहरण से समझते हैं:इनपुटn = 5230, d = 54आउटपुट1व्याख्यासंख्या होगी 5230 + (2*54) = 53

  1. C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम C++ में प्रतिद्वंद्वी को पकड़ने के लिए आवश्यक न्यूनतम चरणों की संख्या ढूंढने का प्रोग्राम

    परिचय मान लीजिए हमारे पास ट्री एजेज की एक सूची है [u, v] के रूप में, जो इंगित करती है कि u और v के बीच एक अनडायरेक्टेड एज है। और हमारे पास दो मान x और y भी हैं। यदि हम नोड x पर हैं, और हमारा प्रतिद्वंद्वी नोड y पर है। पहले राउंड में हम चलते हैं, फिर अगले राउंड में प्रतिद्वंद्वी चलता है और इसी तरह।