কম্পিউটার

C++ এ একটি অ্যারেতে কে-ডিফ জোড়া


ধরুন আমাদের একটি অ্যারে এবং একটি পূর্ণসংখ্যা k আছে, আমাদের অ্যারেতে অনন্য কে-ডিফ জোড়ার সংখ্যা খুঁজে বের করতে হবে। এখানে k-diff জোড়া হল (i, j), যেখানে i এবং j উভয়ই অ্যারেতে উপস্থিত এবং তাদের পরম পার্থক্য হল k৷

সুতরাং, যদি ইনপুটটি [3,1,4,1,5], k =2 এর মতো হয়, তাহলে আউটপুট হবে 2, কারণ অ্যারে-এর মতো দুটি 2-ডিফ জোড়া রয়েছে (1,3) এবং ( 3,5)।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • মানচিত্রকে দেখা এবং সম্পন্ন বলে সংজ্ঞায়িত করুন

  • একটি সেট s

    সংজ্ঞায়িত করুন
  • যদি k <0, তাহলে −

    • রিটার্ন 0

  • আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বৃদ্ধি), −

    • (দেখা [সংখ্যা[i]] 1 দ্বারা বৃদ্ধি করুন)

    • s

      -এ nums[i] সন্নিবেশ করান
  • উত্তর :=0

  • প্রতিটি উপাদানের জন্য এটি s, −

    করুন
    • যদি k 0 এর সমান হয়, তাহলে −

      • যদি দেখা যায় [এটি]> 1, তাহলে −

        • (উত্তর 1 দ্বারা বৃদ্ধি করুন)

    • অন্যথায়

      • 1 দ্বারা সম্পন্ন [এটি] বৃদ্ধি করুন

      • যদি (it + k) দেখা হয় কিন্তু সম্পন্ন না হয়, তাহলে −

        • (উত্তর 1 দ্বারা বৃদ্ধি করুন)

      • যদি (it - k) দেখা যায় কিন্তু সম্পন্ন না হয়, তাহলে −

        • (উত্তর 1 দ্বারা বৃদ্ধি করুন)

  • উত্তর ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -

#include <bits/stdc++.h&g;
using namespace std;
class Solution {
public:
   int findPairs(vector<int>& nums, int k) {
      map<int, int> seen, done;
      set<int> s;
      if (k < 0)
         return 0;
      for (int i = 0; i < nums.size(); i++) {
         seen[nums[i]]++;
         s.insert(nums[i]);
      }
      int ans = 0;
      for (auto it = s.begin(); it != s.end(); it++) {
         if (k == 0) {
            if (seen[*it] > 1)
            ans++;
         }
         else {
            done[*it]++;
            if (seen.find(*it + k) != seen.end() && done.find(*it + k) == done.end())
               ans++;
            if (seen.find(*it - k) != seen.end() && done.find(*it - k) == done.end())
               ans++;
         }
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,1,4,1,5};
   cout << (ob.findPairs(v, 2));
}

ইনপুট

{3,1,4,1,5}, 2

আউটপুট

2

  1. C++ এ দ্বিগুণ জোড়ার অ্যারে

  2. একটি অ্যারেতে সমস্ত জোড়া (a, b) খুঁজুন যেমন একটি % b =k C++ এ

  3. C++ স্ট্রিং এর অ্যারে

  4. C++ এ সাজানো হচ্ছে