Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาผลรวมของรายการย่อยที่ต่อเนื่องกันทั้งหมดใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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