কম্পিউটার

C++ এ K খালি স্লট


ধরুন আমাদের একটি সারিতে N বাল্ব রয়েছে এবং সেগুলি 1 থেকে N পর্যন্ত সংখ্যা করা হয়েছে। প্রথমে, সমস্ত বাল্ব বন্ধ। N দিনের পরে সমস্ত বাল্ব চালু না হওয়া পর্যন্ত আমরা প্রতিদিন ঠিক একটি বাল্ব চালু করতে পারি। আমাদের যদি N দৈর্ঘ্যের একটি অ্যারে বাল্ব থাকে যেখানে বাল্ব[i] =x এটি নির্দেশ করে যে (i+1)তম দিনে, আমরা x অবস্থানে বাল্বটি চালু করব। যদি আমাদের আরেকটি পূর্ণসংখ্যা K থাকে, যেমন ন্যূনতম দিনের সংখ্যা যেমন দুটি চালু বাল্ব আছে যেগুলির মধ্যে ঠিক K বাল্ব আছে যেগুলি সব বন্ধ। যদি এমন কোন দিন না থাকে, তাহলে ফিরুন -1।

সুতরাং, যদি ইনপুটটি বাল্বের মত হয়:[1,3,2] এবং K =1, তাহলে আউটপুট হবে 2 হিসাবে

  • প্রথম দিনে:বাল্ব[0] =1, প্রথম বাল্বটি চালু হয়:[1,0,0]

  • দ্বিতীয় দিনে:বাল্ব[1] =3, তারপর তৃতীয় বাল্বটি চালু হয়:[1,0,1]

  • তৃতীয় দিনে:বাল্ব[2] =2, তারপর দ্বিতীয় বাল্বটি চালু হয়:[1,1,1]

আমরা 2 ফেরত দেব কারণ দ্বিতীয় দিনে, দুটি অন বাল্ব ছিল তাদের মধ্যে একটি বন্ধ বাল্ব রয়েছে৷

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

  • n :=বাল্বের আকার

  • আরম্ভ করার জন্য i :=0, যখন i

    • দিন[বাল্ব[i] - 1] =i + 1

  • বাম :=0, ডানে :=k + 1, ret :=inf

  • আরম্ভ করার জন্য i :=0, যখন ডান

    • যদি দিন[i] <দিন[বাম] বা দিন[i] <=দিন[ডান], তাহলে -

      • যদি আমি সঠিক হিসাবে একই হয়, তাহলে -

        • ret :=সর্বনিম্ন ret এবং সর্বাধিক দিন [বাম] এবং দিন [ডান]

      • বাম :=i

      • ডান:=i + k + 1

  • রিটার্ন (যদি ret একই হয় inf, তাহলে -1, অন্যথায় ret)

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int kEmptySlots(vector<int>& bulbs, int k) {
      int n = bulbs.size();
      vector<int> days(n);
      for (int i = 0; i < n; i++) {
         days[bulbs[i] - 1] = i + 1;
      }
      int left = 0;
      int right = k + 1;
      int ret = INT_MAX;
      for (int i = 0; right < n; i++) {
         if (days[i] < days[left] || days[i] <= days[right]) {
            if (i == right) {
               ret = min(ret, max(days[left], days[right]));
            }
            left = i;
            right = i + k + 1;
         }
      }
      return ret == INT_MAX ? -1 : ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {1,3,2};
   cout << (ob.kEmptySlots(v, 1));
}

ইনপুট

{1,3,2},

আউটপুট

2

  1. C++ STL-এ ফরওয়ার্ড_লিস্ট::ফ্রন্ট() এবং ফরওয়ার্ড_লিস্ট::খালি()

  2. C++ STL-এ খালি() ফাংশন তালিকাভুক্ত করুন

  3. isnormal() C++ এ

  4. C++ এ খালি ক্লাসের একটি বস্তুর আকার কত?