मान लीजिए कि हमारे पास n विभिन्न घनों के आकार वाली एक सरणी संख्या है, उन्हें क्षैतिज रूप से रखा गया है। हमें घनों का ढेर लंबवत बनाना है। नया घन अनुसरण करना चाहिए -
- यदि ith घन jth घन के शीर्ष पर है, तो jth घन की भुजा की लंबाई ith एक की भुजा की लंबाई के बराबर या अधिक होनी चाहिए।
जब हम लंबवत ढेर बना रहे होते हैं, तो हम केवल बायीं ओर या दाहिनी ओर से घन ले सकते हैं लेकिन बीच से नहीं। हमें जांचना होगा कि हम उन्हें ढेर कर सकते हैं या नहीं।
इसलिए, यदि इनपुट nums =[1,2,3,7,8] जैसा है, तो आउटपुट ट्रू होगा क्योंकि हम उन्हें सफलतापूर्वक ढेर करने के लिए दाएं से बाएं बॉक्स ले सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=अंकों का आकार
- d :=अंकों के तत्वों से एक डबल एंडेड कतार बनाएं
- झंडा :=सच
- पिछला :=0
- जबकि d खाली नहीं है, करें
- पहला :=d[0]
- अंतिम:=d[n-1]
- यदि पिछला 0 के समान नहीं है और (प्रथम> पिछला या अंतिम> पिछला) , तो
- झंडा :=झूठा
- लूप से बाहर आएं
- अगर पहले>=आखिरी, फिर
- पिछला :=d का बायां आइटम, और इसे d से हटा दें
- अन्यथा,
- पिछला :=d का अंतिम आइटम और उसे d से हटा दें
- अगर झंडा सही है, तो
- सही लौटें
- अन्यथा,
- झूठी वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
from collections import deque def solve(nums): n = len(nums) d = deque(nums) flag = True prev = 0 while d: first = d[0] last = d[-1] if prev != 0 and (first > prev or last > prev): flag = False break if first >= last: prev = d.popleft() else: prev = d.pop() if flag: return True else: return False nums = [1,2,3,7,8] print(solve(nums))
इनपुट
[1,2,3,7,8]
आउटपुट
True