मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें इसे बाएँ और दाएँ दोनों से तब तक निचोड़ना होगा जब तक कि एक शेष तत्व न हो। हम हर कदम पर राज्यों को वापस करेंगे।
तो, अगर इनपुट nums =[10,20,30,40,50,60] की तरह है, तो आउटपुट होगा
[ [10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210] ]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- ret :=केवल एक एलिमेंट नंबर वाली सूची
- अंकों का आकार> 1, करते समय
- यदि अंकों का आकार 2 के समान है, तो
- अंक:=तत्व के साथ एक सूची बनाएं (अंक [0] + अंक [1])
- अन्यथा जब अंकों का आकार 3 के समान हो, तो
- अंक:=तत्व के साथ एक सूची बनाएं (अंक [0] + अंक [1] + अंक [2])
- अन्यथा,
- अंक:=तत्वों के साथ एक सूची बनाएं (अंक [0] + अंक [1]) फिर अंक 2 से अंक के तीसरे अंतिम तत्व के लिए एक और सूची डालें, फिर तत्व के साथ एक और सूची जोड़ें (अंकों का दूसरा अंतिम तत्व + अंकों का अंतिम तत्व)
- रिटर्न के अंत में अंक डालें
- यदि अंकों का आकार 2 के समान है, तो
- रिटर्न रिटर्न
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums): ret = [nums] while len(nums) > 1: if len(nums) == 2: nums = [nums[0] + nums[1]] elif len(nums) == 3: nums = [nums[0] + nums[1] + nums[2]] else: nums = [nums[0] + nums[1]] + nums[2:-2] + [nums[-2] + nums[-1]] ret.append(nums) return ret ob = Solution() print(ob.solve([10,20,30,40,50,60]))
इनपुट
[10,20,30,40,50,60]
आउटपुट
[[10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210]]