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

C++ में एक नंबर वाला सबसे लंबा अंतराल


मान लीजिए कि हमारे पास अलग-अलग पूर्णांकों की एक सूची है, जिन्हें अंक कहते हैं। हमें सबसे बड़े अंतराल (समावेशी) [प्रारंभ, अंत] का आकार इस तरह निकालना होगा कि इसमें अंकों में अधिकतम एक संख्या हो।

इसलिए, यदि इनपुट nums =[10, 6, 20] की तरह है, तो आउटपुट 99990 होगा, क्योंकि सबसे बड़ा अंतराल [11, 100000] है, इसमें केवल 20 हैं।

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

  • रिट:=-इन्फ

  • अंत:=100000

  • पिछला :=1

  • सरणी संख्याओं को क्रमबद्ध करें

  • n :=अंकों का आकार

  • इनिशियलाइज़ i :=0 के लिए, जब i <अंकों का आकार, अपडेट करें (i से 1 बढ़ाएँ), करें -

    • अगर मैं + 1 <एन, तो -

      • उच्च:=अंक [i + 1] - 1

    • अन्यथा

      • उच्च :=अंत

    • अगर मैं - 1>=0, तो -

      • कम :=पिछला + 1

    • अन्यथा

      • कम :=पिछला

    • पिछला:=अंक[i]

    • ret :=अधिकतम उच्च - निम्न + 1 और ret

  • वापसी रिट

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

उदाहरण

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(vector<int> &nums) {
      int ret = INT_MIN;
      int end = 100000;
      int prev = 1;
      sort(nums.begin(), nums.end());
      int n = nums.size();
      int low, high;
      for (int i = 0; i < nums.size(); i++) {
         if (i + 1 < n) {
            high = nums[i + 1] - 1;
         } else
         high = end;
         if (i - 1 >= 0) {
            low = prev + 1;
         } else
         low = prev;
         prev = nums[i];
         ret = max(high - low + 1, ret);
      }
      return ret;
   }
};
main() {
   Solution ob;
   vector<int> v = {10, 6, 20};
   cout << (ob.solve(v));
}

इनपुट

{10, 6, 20}

आउटपुट

99990

  1. C++ में मितव्ययी संख्या

    इस समस्या में, हमें एक धनात्मक पूर्णांक N दिया जाता है। हमारा कार्य यह जाँचने के लिए एक प्रोग्राम बनाना है कि दी गई संख्या मितव्ययी संख्या है या नहीं। मितव्ययी संख्या - एक संख्या जिसके अंकों की संख्या दी गई संख्या के अभाज्य गुणनखंड में अंकों की संख्या से अधिक है। उदाहरण − 625, संख्या 625 का अभाज्

  1. सी++ पेंटाटोप नंबर

    पास्कल के त्रिभुज में एक पंचकोण संख्या को पाँचवीं संख्या के रूप में वर्णित किया गया है। अब, जैसा कि आप जानते हैं, यह पांचवीं संख्या है, तो इसका मतलब है कि हमारे पास पास्कल के त्रिकोण में कम से कम पांच संख्याएं होनी चाहिए, इसलिए इस श्रृंखला की पहली संख्या 1 4 6 4 1 से शुरू होती है। पास्कल त्रिभुज की

  1. C++ में एक पूर्णांक का पूरक खोजें

    इस भाग में, हम देखेंगे कि किसी पूर्णांक का 1 पूर्ण कैसे ज्ञात किया जाता है। हम इस कार्य को बहुत तेजी से करने के लिए पूरक ऑपरेटर का उपयोग कर सकते हैं, लेकिन यह 32 बिट पूरक मूल्य (4-बाईप पूर्णांक) बना देगा। यहाँ हम n बिट संख्याओं का पूरक चाहते हैं। मान लीजिए कि हमारे पास एक संख्या 22 है। बाइनरी समकक्