nums라고 하는 음수가 아닌 숫자 목록과 또 다른 양수 값 k가 있다고 가정합니다. 합이 k의 배수인지 아닌지 길이가 2 이상인 하위 목록이 있는지 확인해야 합니다.
따라서 입력이 nums =[12, 6, 3, 4] k =5와 같으면 하위 목록이 [12, 3] 합계가 15이고 5로 나눌 수 있으므로 출력은 True가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 합계 :=0
- m :=새 지도
- m[0] :=-1
- 0에서 숫자 크기 범위의 i에 대해
- 합계 :=합 + 숫자[i]
- sum :=합계 모드 k
- 합계가 m에 있으면
- i - m[sum]>=2이면
- 참 반환
- i - m[sum]>=2이면
- 그렇지 않으면
- m[sum] :=나
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, nums, k): sum = 0 m = {} m[0] = -1 for i in range(0, len(nums)): sum += nums[i] sum %= k if sum in m: if i - m[sum] >= 2: return True else: m[sum] = i return False ob = Solution() nums = [12, 6, 3, 4] k = 5 print(ob.solve(nums, k))
입력
[12, 6, 3, 4], 5
출력
True