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

파이썬에서 합계가 대상으로 지정된 하위 목록의 수를 찾는 프로그램

<시간/>

nums라는 숫자 목록과 다른 값 대상이 있다고 가정하면 합이 target과 동일한 하위 목록의 수를 찾아야 합니다.

따라서 입력이 nums =[3, 0, 3] target =3과 같으면 합이 3인 하위 목록이 있으므로 출력은 4가 됩니다. [3], [3, 0], [0, 3], [3].

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

  • temp :=빈 지도
  • 온도[0] :=1
  • s :=0
  • ans :=0
  • 0에서 숫자 크기 범위의 i에 대해
    • s :=s + nums[i]
    • comp :=s - 대상
    • comp가 임시 상태이면
      • ans :=ans + temp[comp]
    • temp[s] :=temp[s] + 1
  • 반환

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시 코드

from collections import defaultdict

class Solution:
   def solve(self, nums, target):
      temp = defaultdict(int)
      temp[0] = 1
      s = 0
      ans = 0
      for i in range(len(nums)):
         s += nums[i]
         comp = s - target
         if comp in temp:
            ans += temp[comp]
            temp[s] += 1
         return ans

ob = Solution()
nums = [3, 0, 3]
target = 3
print(ob.solve(nums, target))

입력

[3, 0, 3], 3

출력

4