मान लीजिए कि हमारे पास एक लंबी फूल की क्यारी है जिसमें कुछ भूखंड लगाए गए हैं और कुछ खाली हैं। अब एक विवशता है, आसन्न भूखंडों में फूल नहीं लगाए जा सकते, वे पानी के लिए प्रतिस्पर्धा करेंगे और दोनों मर जाएंगे। इसलिए यदि हमारे पास एक फूल की क्यारी है, जिसमें 0 और 1, 0 वाली एक सरणी खाली है और 1 भरने को इंगित करता है, और एक संख्या n भी दी गई है, तो हमें यह जांचना होगा कि क्या इसमें n नए फूल लगाए जा सकते हैं, बिना किसी उल्लंघन के। आसन्न-फूल नियम या नहीं।
इसलिए, अगर इनपुट फ्लावरबेड =[1,0,0,0,1], n =1 जैसा है, तो आउटपुट ट्रू होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
यदि फूलों की क्यारियों का आकार
-
झूठी वापसी
-
-
यदि फूलों की क्यारी का आकार 1 के समान है और फूलों की क्यारी [0] 0 के समान है और n 1 के समान है, तो -
-
सही लौटें
-
-
इनिशियलाइज़ i :=0 के लिए, जब i <फ्लावरबेड का आकार, अपडेट (i 1 से बढ़ाएँ), करें -
-
यदि n> 0, तो -
-
अगर मैं 0 के समान हूं, तो -
-
अगर फ्लावरबेड [i] 0 के समान है और फ्लावरबेड [1] 0 के समान है, तो -
-
फूलों का बिस्तर[0] :=1
-
(n से 1 घटाएं)
-
-
-
अन्यथा जब मैं फूलों की क्यारियाँ-1 के आकार के समान हो, तो -
-
अगर फ्लावरबेड[i] 0 के समान है और फ्लावरबेड[i - 1] 1 के बराबर नहीं है, तो -
-
फूलों का बिस्तर[i] :=1
-
(n से 1 घटाएं)
-
-
-
अन्यथा जब फ्लावरबेड [i] 0 के समान है और फ्लावरबेड [i + 1] 0 के समान है और फ्लावरबेड [i - 1] 0 के समान है, तो -
-
फूलों का बिस्तर[i] :=1
-
(n से 1 घटाएं)
-
-
-
यदि n, 0 के समान है, तो -
-
सही लौटें
-
-
-
यदि n, 0 के समान है, तो -
-
सही लौटें
-
-
झूठी वापसी
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; class Solution { public: bool canPlaceFlowers(vector<int>& flowerbed, int n) { if (flowerbed.size() < n) return false; if (flowerbed.size() == 1 && flowerbed[0] == 0 && n == 1) return true; for (int i = 0; i < flowerbed.size(); i++) { if (n > 0) { if (i == 0) { if (flowerbed[i] == 0 && flowerbed[1] == 0) { flowerbed[0] = 1; n--; } } else if (i == flowerbed.size() - 1) { if (flowerbed[i] == 0 && flowerbed[i - 1] != 1) { flowerbed[i] = 1; n--; } } else if (flowerbed[i] == 0 && flowerbed[i + 1] == 0 && flowerbed[i - 1] == 0) { flowerbed[i] = 1; n--; } } if (n == 0) { return true; } } if (n == 0) { return true; } return false; } }; main(){ Solution ob; vector<int> v = {1,0,0,0,1}; cout << (ob.canPlaceFlowers(v, 1)); }
इनपुट
{1,0,0,0,1}, 1
आउटपुट
1