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