কম্পিউটার

C++ এ ডুপ্লিকেট II রয়েছে


ধরুন আমাদের একটি অ্যারে এবং একটি পূর্ণসংখ্যা 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

  1. C++ এ ডুপ্লিকেট সাবট্রিস খুঁজুন

  2. C++-এ সমস্ত ডুপ্লিকেট সাবট্রিস খুঁজুন

  3. একটি বাইনারি ট্রিতে C++ সাইজের 2 বা তার বেশি ডুপ্লিকেট সাবট্রি রয়েছে কিনা তা পরীক্ষা করুন

  4. পাইথনে ডুপ্লিকেট রয়েছে