สมมติว่าเรามีอาร์เรย์ของค่าบวกที่เรียกว่า nums เราต้องหาผลรวมสูงสุดของอาร์เรย์ย่อยจากน้อยไปมากในหน่วย nums เราสามารถพูดได้ว่า subarray [nums_l, nums_l+1, ..., nums_r-1, nums_r] กำลังขึ้นเมื่อสำหรับ i ทั้งหมด โดยที่ l <=i
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[15,25,35,5,15,55] เอาต์พุตจะเป็น 75 เนื่องจาก [5,15,55] กำลังเพิ่มอาร์เรย์ย่อยด้วยผลรวมสูงสุด
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
รวม:=nums[0]
max_total:=nums[0]
สำหรับฉันในช่วง 1 ถึงขนาดของ nums ทำ
ถ้า nums[i]> nums[i-1] แล้ว
รวม :=รวม + nums[i]
มิฉะนั้น
รวม:=nums[i]
ถ้ารวม> max_total แล้ว
max_total:=ทั้งหมด
คืนค่า max_total
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def solve(nums):
total=nums[0]
max_total=nums[0]
for i in range(1,len(nums)):
if nums[i] > nums[i-1]:
total+=nums[i]
else:
total=nums[i]
if total > max_total:
max_total=total
return max_total
nums = [15,25,35,5,15,55]
print(solve(nums))
อินพุต
[15,25,35,5,15,55]
ผลลัพธ์
75