Cho danh sách số nums, nén nó từ cả hai đầu cho đến khi chỉ còn một phần tử. Trả về trạng thái ở mỗi bước.
Ví dụ, nums = [10,20,30,40,50,60], đầu ra:
[[10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210]]
Các bước giải quyết:
ret := [nums].- Trong khi độ dài
nums> 1:- Nếu độ dài == 2:
nums = [nums[0] + nums[1]]. - Ngược lại nếu độ dài == 3:
nums = [nums[0] + nums[1] + nums[2]]. - Ngược lại:
nums = [nums[0]+nums[1]] + nums[2:-2] + [nums[-2]+nums[-1]]. - Thêm
numsvàoret.
- Nếu độ dài == 2:
- Trả về
ret.
Ví dụ minh họa
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]))
Đầu vào
[10,20,30,40,50,60]
Đầu ra
[[10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210]]