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