কম্পিউটার টিউটোরিয়াল

C++-এ অ্যারে K ক্রমাগত সংখ্যার সেটে ভাগ করা


ধরুন আমাদের একটি পূর্ণসংখ্যা অ্যারে nums এবং একটি ধনাত্মক পূর্ণসংখ্যা k আছে, আমাদের বের করতে হবে কি এই অ্যারেকে k ক্রমাগত সংখ্যার সেটে ভাগ করা সম্ভব। তাই আমাদের True ফেরত দিতে হবে যদি সম্ভব হয় অন্যথায় False। তাই যদি ইনপুট হয় [1,2,3,3,4,4,5,6] এবং k = 4, তবে আউটপুট হবে true। কারণ, আমরা অ্যারেকে এভাগে ভাগ করতে পারি যেন [1,2,3,4] এবং [3,4,5,6]

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব −

  • একটি ম্যাপ m তৈরি করুন, n := nums অ্যারেতে আকার সেট করুন
  • nums-এ প্রতিটি উপাদান e জন্য
    • m[e] ১ বৃদ্ধি করুন
  • cnt := ০
  • nums অ্যারে সাজান
  • i = 0 থেকে n পর্যন্ত
    • x := nums[i]
    • যদি m[x – 1] = 0 এবং m[x] > 0
      • l := k
      • যখন k > 0
        • যদি m[x] > 0, তবে m[k] মান ১ হ্রাস করুন, অন্যথায় false ফেরত দিন
        • x এবং cnt ১ বৃদ্ধি করুন, এবং k ১ হ্রাস করুন
      • k := l
  • যদি cnt = n হয় তবে true ফেরত দিন, অন্যথায় false

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন −

উদাহরণ

#include <bits/stdc++.h> using namespace std; class Solution {    public:    bool isPossibleDivide(vector<int>& nums, int k) {       map <int, int> m;       int n = nums.size();       for(int i = 0; i < n; i++){          m[nums[i]]++;       }       int cnt = 0;       sort(nums.begin(), nums.end());       for(int i = 0; i < n; i++){          int x = nums[i];          if(m[x - 1] == 0 && m[x] > 0){             int l = k;             while(k>0){                if(m[x] > 0){                   m[x]--;             } else return false;                x++;                k--;                cnt++;             }             k = l;          }       }      return cnt == n;    } }; main(){    vector<int> v = {1,2,3,3,4,4,5,6};    Solution ob;    cout << (ob.isPossibleDivide(v, 4)); }

ইনপুট

[1,2,3,3,4,4,5,6] 4

আউটপুট

1

  1. C++-এ অ্যারে অফ নাম্বারদের প্রোডাক্টের প্রথম ডিজিট বের করা

  2. C++-এ অ্যারেতে সান্মুখ্য প্রাইম সংখ্যার সর্বোচ্চ সংখ্যা

  3. C++-এ বাইনারি সার্কুলার অ্যারেতে সর্বোচ্চ সান্মুখ্য ১ বা ০

  4. C++-তে অ্যারেতে থাকা সব প্রাইম নম্বরের গুণফল বের করা