A와 B라고 하는 두 개의 숫자 목록이 있다고 가정합니다. A에서 일부 하위 목록을 가져와서 반대로 해야 합니다. 그런 다음 A를 B로 바꿀 수 있는지 확인하십시오. 여러 번 하위 목록을 가져와서 되돌릴 수 있습니다.
따라서 입력이 A =[2, 3, 4, 9, 10], B =[4, 3, 2, 10, 9]와 같으면 출력은 [2,3,4]를 반대로 할 수 있으므로 True가 됩니다. ] 및 [9,10].
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- res :=지도, 처음에는 비어 있음
- 숫자 단위의 각 n에 대해 다음을 수행합니다.
- res[n] :=res[n] + 1
- 대상의 각 t에 대해 다음을 수행합니다.
- res[t] :=res[t] - 1
- res 값의 모든 요소가 0과 같으면 true를 반환합니다.
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
from collections import defaultdict class Solution: def solve(self, nums, target): res = defaultdict(int) for n in nums: res[n] += 1 for t in target: res[t] -= 1 return all(n == 0 for n in res.values()) ob = Solution() A = [2, 3, 4, 9, 10] B = [4, 3, 2, 10, 9] print(ob.solve(A, B))
입력
[2, 3, 4, 9, 10], [4, 3, 2, 10, 9]
출력
True