मान लीजिए, अलग-अलग ऊंचाई के घरों की संख्या n है और एक पार्कौर कलाकार कुछ ईंटों और सीढ़ियों की मदद से एक घर से दूसरे घर जाना चाहता है। घरों की ऊंचाई हमें एक सरणी के रूप में दी गई है। प्रत्येक ईंट एक इकाई लंबाई की होती है और हमें उनमें से एक मुट्ठी भर दी जाती है। हम सीढ़ियों और ईंटों का उपयोग केवल एक बार ही कर सकते हैं। हमें उस सबसे दूर की इमारत का पता लगाना है जहां पार्कौर कलाकार जा सकता है।
इसलिए, अगर इनपुट हाइट्स =[5, 8, 7, 6, 2, 3, 1, 4], ब्रिक्स =3, लैडर =2 जैसा है, तो आउटपुट 7 होगा।
कलाकार 0 के निर्माण से शुरू होता है।
वह 3 ईंटों की मदद से बिल्डिंग 1 तक पहुंचता है।
वह 2, 3, 4 के निर्माण के लिए कूदता है क्योंकि उत्तराधिकारी इमारतें पूर्ववर्ती इमारतों की तुलना में छोटी होती हैं।
वह इमारत 4 से इमारत 5 तक जाने के लिए सीढ़ी का उपयोग करता है।
वह इमारत 5 से इमारत 6 पर कूदता है क्योंकि इमारत 6 छोटी है।
वह इमारत 7 तक पहुँचने के लिए आखिरी सीढ़ी का उपयोग करता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अस्थायी:=एक नया ढेर
-
मेरे लिए 1 से लेकर ऊंचाई के आकार तक, करें
-
जिला:=ऊँचाई [i] - ऊँचाई [i - 1]
-
अगर जिला> 0, तो
-
ईंटें :=ईंटें - जिला
-
पुश वैल्यू -डिस्ट टू द हीप टेम्प
-
अगर ईंटें <0, तो
-
सीढ़ी :=सीढ़ी - 1
-
ईंटें :=ईंटें - हीप टेम्परेचर से निकाला गया सबसे छोटा तत्व
-
अगर ईंटें <0 या सीढ़ी <0, तो
-
वापसी मैं - 1
-
-
-
-
-
ऊंचाई का वापसी आकार - 1
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
from heapq import heappush, heappop def solve(heights, bricks, ladders): temp = [] for i in range(1, len(heights)): dist = heights[i] - heights[i - 1] if dist > 0: bricks -= dist heappush(temp, -dist) if bricks < 0: ladders -= 1 bricks -= heappop(temp) if bricks < 0 or ladders < 0: return i - 1 return len(heights) - 1 print(solve([5, 8, 7, 6, 2, 3, 1, 4], 3, 2))
इनपुट
[5, 8, 7, 6, 2, 3, 1, 4], 3, 2
आउटपुट
7