ধরুন আমাদের একটি অ্যারে এবং একটি পূর্ণসংখ্যা k আছে, আমাদের পরীক্ষা করতে হবে অ্যারেতে দুটি স্বতন্ত্র সূচক i এবং j আছে কিনা যেমন nums[i] =nums[j] এবং i এবং j মধ্যে পরম পার্থক্য সর্বাধিক k।
সুতরাং, যদি ইনপুটটি [1,2,4,1] এবং k =3 এর মত হয়, তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
জোড়ার একটি অ্যারে সংজ্ঞায়িত করুন
-
আরম্ভ করার জন্য i :=0, যখন i − সংখ্যার আকার, আপডেট করুন (i 1 দ্বারা বৃদ্ধি করুন), করুন −
-
nn
-এর শেষে {nums[i], i} সন্নিবেশ করান
-
-
অ্যারে সাজান nn
-
আরম্ভ করার জন্য i :=1, যখন i
-
যদি nn[i]-এর প্রথম উপাদান nn[i - 1]-এর প্রথম উপাদান এবং |nn[i]-এর দ্বিতীয় - nn[i - 1]|-এর দ্বিতীয় উপাদানের মতো হয়, তাহলে −
-
প্রত্যাবর্তন সত্য
-
-
-
ফেরত মিথ্যা
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
vector<pair<int, int> > nn;
for (<) {
nn.push_back(make_pair(nums[i], i));
}
sort(nn.begin(), nn.end());
for (int i = 1; i < nn.size(); i++) {
if (nn[i].first == nn[i - 1].first and abs(nn[i].second - nn[i - 1].second) <= k)
return true;
}
return false;
}
};
main(){
Solution ob;
vector<int> v = {1,2,4,1};
cout << (ob.containsNearbyDuplicate(v, 3));
} ইনপুট
{1,2,4,1} আউটপুট
1