বিভিন্ন পূর্ণসংখ্যার একটি অ্যারে দেওয়া আছে। সর্বোচ্চ আকারের ইন্টারভাল [start, end] বের করুন যাতে সেটি অ্যারেতে শুধু একটি সংখ্যা ধারণ করে (অথবা শূন্য)। রেঞ্জ ১ থেকে ১০০,০০০ পর্যন্ত।
উদাহরণ
ইনপুট: [10, 6, 20]
সোর্টেড: [6, 10, 20]
সম্ভাব্য ইন্টারভাল:
- [1, 5] → আকার ৫ (কোনো সংখ্যা নেই)
- [7, 9] → আকার ৩ (কোনো সংখ্যা নেই)
- [11, 19] → আকার ৯ (শুধু ২০ নেই, ১১-১৯ শূন্য)
- [21, 100000] → আকার ৯৯৯৮০ (শুধু ২০ নেই)
আউটপুট: 99990
C++ বাস্তবায়ন
#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();
for (int i = 0; i < n; i++) {
int high = (i + 1 < n) ? nums[i+1] - 1 : end;
int low = (i - 1 >= 0) ? prev + 1 : prev;
prev = nums[i];
ret = max(ret, high - low + 1);
}
return ret;
}
};
int main() {
Solution ob;
vector<int> v = {10, 6, 20};
cout << ob.solve(v);
return 0;
}
লজিক ব্যাখ্যা
সোর্টেড অ্যারেতে প্রতিটি সংখ্যার মাঝপথে যে গ্যাপগুলো থাকে, সেগুলোই 候選 ইন্টারভাল। এন্ড পয়েন্টগুলো হ্যান্ডেল করতে prev ভ্যারিয়েবল ব্যবহার করা হয়েছে।