ধরুন আমাদের কাছে সংখ্যা বলা স্বতন্ত্র পূর্ণসংখ্যার একটি তালিকা আছে। আমাদের সবচেয়ে বড় ব্যবধানের (অন্তর্ভুক্ত) [শুরু, শেষ] আকার খুঁজে বের করতে হবে যাতে এটি সংখ্যায় সর্বাধিক একটি সংখ্যা থাকে।
সুতরাং, যদি ইনপুটটি nums =[10, 6, 20] এর মত হয়, তাহলে আউটপুট হবে 99990, কারণ বৃহত্তম ব্যবধান [11, 100000], এতে শুধুমাত্র 20 রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ret :=-inf
-
শেষ :=100000
-
পূর্ববর্তী :=1
-
অ্যারের সংখ্যাগুলি সাজান
-
n :=সংখ্যার আকার
-
আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −
-
i + 1
-
উচ্চ :=সংখ্যা[i + 1] - 1
-
-
অন্যথায়
-
উচ্চ :=শেষ
-
-
যদি i - 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