程序将相同的连续元素打包到Python的子列表中

假设我们有一个数字nums列表,我们会将具有相同值的连续元素打包到子列表中。我们必须记住,列表中只有一个事件,它应该仍然在自己的子列表中。

因此,如果输入像nums = [5,5,2,7,7,7,2,2,2,2],那么输出将是[[5,5],[2],[7, 7,7],[2,2,2,2]]

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

  • 如果nums为空,则

    • 返回新列表

  • 结果:=一个列表,另一个列表包含nums [0]

  • j:= 0

  • 对于范围为1到nums的i

    • 在结果末尾插入一个新列表

    • j:= j + 1

    • 如果nums [i]与nums [i-1]不同,则

    • 在结果末尾插入nums [i] [j]

  • 返回结果

让我们看下面的实现以更好地理解-

示例

class Solution:
   def solve(self, nums):
      if not nums:
         return []
      result = [[nums[0]]]
      j = 0
      for i in range(1, len(nums)):
         if nums[i] != nums[i - 1]:
            result.append([])
            j += 1
            result[j].append(nums[i])
      return result
ob = Solution()nums = [5, 5, 2, 7, 7, 7, 2, 2, 2, 2]
print(ob.solve(nums))

输入值

[5, 5, 2, 7, 7, 7, 2, 2, 2, 2]

输出结果

[[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]
猜你喜欢