Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 모든 인접한 하위 목록의 합계를 찾는 프로그램

<시간/>

nums라는 숫자 목록이 있다고 가정하고 이제 모든 인접한 하위 배열을 고려합니다. 이 하위 배열 각각을 합하고 이 모든 값의 합을 반환합니다. 마지막으로 결과를 10 ** 9 + 7로 수정합니다.

따라서 입력이 nums =[3, 4, 6]과 같으면 다음과 같은 하위 배열이 있으므로 출력은 43이 됩니다. - [3] [4] [6] [3, 4] [4, 6] [3, 4, 6] 이들의 합은 43입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • N:=숫자 크기
  • an:=0
  • 0~숫자 크기 범위의 i에 대해
    • n:=숫자[i]
    • ans :=ans +(i+1) *(N-i) * n
  • 리턴(Ans 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