程序从左侧或右侧压缩列表元素,使其在Python中成为单个元素

假设我们有一个称为nums的数字列表,我们必须从左右两个方向挤压它,直到剩下一个元素为止。我们将在每一步返回状态。

因此,如果输入类似于nums = [10,20,30,40,50,60],则输出将为

[ [10, 20, 30, 40, 50, 60],
   [30, 30, 40, 110],
   [60, 150],
   [210]
]

为了解决这个问题,我们将遵循以下步骤-

  • ret:=一个只有一个元素编号的列表

  • 当nums的大小> 1时,执行

    • nums:=创建一个包含元素(nums [0] + nums [1])的列表,然后从nums的索引2到nums的倒数第二个元素插入另一个列表,然后添加另一个包含元素的列表(nums的倒数第二个元素+ nums的最后一个元素nums)

    • nums:=创建一个包含元素的列表(nums [0] + nums [1] + nums [2])

    • nums:=创建一个包含元素的列表(nums [0] + nums [1])

    • 如果nums的大小等于2,则

    • 否则,当nums的大小等于3时,则

    • 除此以外,

    • 在ret的末尾插入nums

    • 返回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]]
    猜你喜欢