สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ตอนนี้ให้พิจารณาอาร์เรย์ย่อยที่อยู่ติดกันทุกรายการ รวมแต่ละอาร์เรย์ย่อยเหล่านี้และส่งกลับผลรวมของค่าทั้งหมดเหล่านี้ สุดท้าย ดัดแปลงผลลัพธ์ 10 ** 9 + 7
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3, 4, 6] ผลลัพธ์จะเป็น 43 เนื่องจากเรามีอาร์เรย์ย่อยต่อไปนี้ − [3] [4] [6] [3, 4] [4, 6] [3, 4, 6] ผลรวมของทั้งหมดนี้คือ 43.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- N:=ขนาดของ nums
- ตอบ:=0
- สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
- n:=nums[i]
- ans :=ans +(i+1) *(N-i) * n
- ผลตอบแทน (เช่น mod 1000000007)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, nums): N=len(nums) ans=0 for i in range(len(nums)): n=nums[i] ans += (i+1) * (N-i) * n return ans%1000000007 ob = Solution() print(ob.solve([3, 4, 6]))
อินพุต
[3, 4, 6]
ผลลัพธ์
43