สมมติว่าเรามีอาร์เรย์ของค่าบวกที่เรียกว่า nums เราต้องหาผลรวมของอาร์เรย์ย่อยที่มีความยาวคี่ที่เป็นไปได้ทั้งหมด ดังที่เราทราบ subarray เป็นผลสืบเนื่องต่อเนื่องกันของอาร์เรย์ เราต้องหาผลรวมของอาร์เรย์ย่อยที่มีความยาวคี่ทั้งหมดของ nums
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,8,2,5,7] ผลลัพธ์จะเป็น อาร์เรย์ย่อยที่มีความยาวคี่ -
nums[0] = 3 nums[1] = 8 nums[2] = 2 nums[3] = 5 nums[4] = 7 nums[0..2], so sum = 13 nums[1..3], so sum = 15 nums[2..4], so sum = 14 nums[0..4] = 25 So total sum is 3+8+2+5+7+13+15+14+25 = 92
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ทั้งหมด:=0
-
idx:=0
-
l:=รายการของดัชนีวางคี่ทั้งหมด
-
ในขณะที่ idx <ขนาดของ l ทำ
-
k:=l[idx]
-
สำหรับฉันในช่วง 0 ถึงขนาดของ nums ทำ
-
ถ้า i+k <ขนาดของ nums + 1 แล้ว
-
ทั้งหมด :=ยอดรวม + ผลรวมขององค์ประกอบทั้งหมดเป็น nums จากดัชนี i ถึง i+k-1
-
-
-
idx :=idx + 1
-
-
ผลตอบแทนรวม
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(nums): total=0 idx=0 l=[i for i in range(len(nums)+1) if i%2!=0] while(idx<len(l)): k=l[idx] for i in range(len(nums)): if i+k < len(nums)+1: total+=sum(nums[i:i+k]) idx+=1 return total nums = [3,8,2,5,7] print(solve(nums))
อินพุต
[3,8,2,5,7]
ผลลัพธ์
92