কম্পিউটার টিউটোরিয়াল

দেওয়া Nটি পূর্ণসংখ্যার মধ্যঠিক একটি সম্বলিত সর্বোচ্চ ইন্টারভাল খুঁজে বের করা C++-তে


মনে করুন আমাদের Nটি ভিন্ন পূর্ণসংখ্যার একটি অ্যারে আছে। আমাদের [L, R] ইন্টারভালে সর্বোচ্চ উপাদান বের করতে হবে যেন ইন্টারভালটি দেওয়া Nটি পূর্ণসংখ্যার মধ্যঠিক একটি সম্বলিত করে এবং 1 <= L <= R <= 10^5।

তাই যদি অ্যারেটি হয় Arr = [5, 10, 200], তবে আউটপুট হবে 99990। কারণ সম্ভাব্য সব ইন্টারভাল হল [1, 9], [6, 199] এবং [11, 100000]। শেষটিতে সর্বোচ্চ পূর্ণসংখ্যা আছে 99990।

আইডিয়াটি সহজ। আমরা সেই উপাদানটি ফিক্স করব যা আমরা চাই আমাদের ইন্টারভালে থাকবে। এখন, আমরা দেখব কিভাবে আমরা আমাদের ইন্টারভালকে বাম এবং ডান দিকের বিস্তার করতে পারি অন্য উপাদানlarla ওভারল্যাপ ছাড়া। তাই আমাদের প্রথমে অ্যারেটি সর্ট করতে হবে, তারপর একটি ফিক্সড উপাদানের জন্য, আমরা শেষ বিন্দু নির্ধারণ করব পिछেল এবং পরবর্তী উপাদান ব্যবহার করে। আমরা কーナর কেসগুলো খেয়াল রাখব। তাই যখন আমরা প্রথম এবং শেষ ইন্টারভাল ফিক্স করব। এইভাবে প্রতিটি উপাদান i-এর জন্য, আমরা ইন্টারভালের সর্বোচ্চ দৈর্ঘ্য বের করব।

উদাহরণ

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int maximumSize(vector<int>& vec, int n) {
    vec.push_back(0);
    vec.push_back(100001);
    n += 2;
    sort(vec.begin(), vec.end());
    int max_value = 0;
    for (int i = 1; i < n - 1; i++) {
        int Left = vec[i - 1] + 1;
        int Right = vec[i + 1] - 1;
        int count = Right - Left + 1;
        max_value = max(max_value, count);
    }
    return max_value;
}

int main() {
    vector<int> v;
    v.push_back(200);
    v.push_back(10);
    v.push_back(5);
    int n = v.size();
    cout << "Maximum Size is: " << maximumSize(v, n);
}

আউটপুট

Maximum Size is: 99990

  1. দেওয়া অঙ্ক সংখ্যা ও অঙ্ক যোগফলের সাথে সর্বোচ্চ সংখ্যা বের করা (C++)

  2. অ্যারে থেকে ২, ৩, ৫ দ্বারা বিভাজ্য সর্বোচ্চ সংখ্যা বের করা (C++)

  3. একটি সংখ্যার ভাজকগুলোর মধ্যে সবচেয়ে বড় Good Number বের করা (C++)

  4. বাইনারি ট্রিয়ে সর্বোচ্চ BST সাবট্রি বের করা (C++)