Python程序:将连续相同的元素打包到子列表中
假设我们有一个数字列表nums,我们将把相同值的连续元素打包到子列表中。请记住,如果列表中只有一个元素出现一次,它仍然应该在它自己的子列表中。
因此,如果输入类似于nums = [5, 5, 2, 7, 7, 7, 2, 2, 2, 2],则输出将为[[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]
为了解决这个问题,我们将遵循以下步骤:
- 如果nums为空,则
- 返回一个新列表
- result := 一个包含另一个列表的列表,该列表包含nums[0]
- j := 0
- 对于范围从1到nums大小的i,执行:
- 如果nums[i]与nums[i - 1]不同,则
- 在result的末尾插入一个新列表
- j := j + 1
- 在result[j]的末尾插入nums[i]
- 如果nums[i]与nums[i - 1]不同,则
- 返回result
让我们来看下面的实现,以便更好地理解:
示例
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]]
广告