บีบอัดลิสต์: รวมคู่แรกและคู่สุดท้ายซ้ำๆ จนเหลือ 1 อีเล็มน์ต์ คืนสถานะทุกขั้นตอน
ตัวอย่าง: [10,20,30,40,50,60] → [[10,20,30,40,50,60], [30,30,40,110], [60,150], [210]]
อัลกอริธึม
- ขณะความยาว > 1:
- ยาว 2: รวมทั้งคู่
- ยาว 3: รวมทั้งสาม
- อื่น: รวมคู่แรก, คงกลางไว้, รวมคู่สุดท้าย
การนำไปใช้
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], [30,30,40,110], [60,150], [210]]