मान लीजिए हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है। यह सूची एक पेड़ के इनऑर्डर ट्रैवर्सल में लीफ नोड्स का प्रतिनिधित्व कर रही है। यहां आंतरिक नोड्स में 2 बच्चे हैं और उनका मूल्य इसके बाएं उपट्री के सबसे बड़े पत्ते के मूल्य और इसके दाहिने उपट्री के सबसे बड़े पत्ते के मूल्य के उत्पाद के समान है। हमें पेड़ का योग उसके मूल्यों के न्यूनतम योग के साथ खोजना होगा
इसलिए, यदि इनपुट nums =[3, 5, 10] जैसा है, तो आउटपुट 83 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- res :=अंकों में सभी तत्वों का योग
- अंकों का आकार> 1, करते समय
- i :=अंकों के न्यूनतम तत्व का सूचकांक
- बाएं:=nums[i - 1] जब i> 0 अन्यथा अनंत
- दाएं:=अंक [i + 1] जब मैं <अंकों का आकार -1 अन्यथा अनंत
- res :=res + (न्यूनतम बाएँ और दाएँ) * अंक का वां तत्व, फिर अंकों से ith तत्व हटाएं
- रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
class Solution: def solve(self, nums): res = sum(nums) while len(nums) > 1: i = nums.index(min(nums)) left = nums[i - 1] if i > 0 else float("inf") right = nums[i + 1] if i < len(nums) - 1 else float("inf") res += min(left, right) * nums.pop(i) return res ob = Solution() nums = [3, 5, 10] print(ob.solve(nums))
इनपुट
[3, 5, 10]
आउटपुट
83