Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình nén danh sách từ hai đầu cho đến khi còn một phần tử trong Python


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 nums vào ret.
  • 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]]