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]]
廣告
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP