สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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 จากนั้นเพิ่มรายการอื่นที่มีองค์ประกอบ (องค์ประกอบสุดท้ายที่สองของ nums + องค์ประกอบสุดท้ายของ num)
- ใส่ nums ที่ท้าย ret
- ถ้าขนาดของ nums เท่ากับ 2 แล้ว
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
คลาสโซลูชัน:def แก้ปัญหา(ตัวเอง, nums):ret =[nums] ในขณะที่ len(nums)> 1:if len(nums) ==2:nums =[nums[0] + nums[1]] elif len(nums) ==3:nums =[nums[0] + nums[1] + nums[2]] อื่นๆ:nums =[nums[0] + nums[1]] + nums[2:-2] + [nums[-2] + nums[-1]] ret.append(nums) return retob =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]]