मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें इसे बाएं और दाएं दोनों तरफ से तब तक निचोड़ना है जब तक एक शेष तत्व नहीं बच जाता। हम प्रत्येक चरण में राज्यों को वापस करेंगे।
उदाहरण के लिए, यदि इनपुट है nums = [10,20,30,40,50,60], तो आउटपुट होगा
[ [10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210] ]
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- ret := केवल एक तत्व nums वाली सूची
- जब तक nums का आकार > 1, करें
- यदि nums का आकार, 2 के समान है, तो
- nums := (nums[0] + nums[1]) तत्व वाली सूची बनाएं
- अन्यथा जब nums का आकार, 3 के समान है, तो
- nums := (nums[0] + nums[1] + nums[2]) तत्व वाली सूची बनाएं
- अन्यथा,
- nums := (nums[0] + nums[1]) तत्व वाली सूची बनाएं फिर nums से इंडेक्स 2 से तीसरे अंतिम तत्व तक की सूची डालें फिर (nums का दूसरा अंतिम तत्व + nums का अंतिम तत्व) तत्व वाली सूची जोड़ें
- nums को ret के अंत में डालें
- यदि nums का आकार, 2 के समान है, तो
- ret वापस करें
बेहतर समझ के लिए নিম্নলিখিত কোড দেখুন:
উদাহরণ
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]]