Python程式:壓縮列表元素(從左或右)使其成為單個元素
假設我們有一個名為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插入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]]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP