두 개의 배열 nums1 및 nums2와 다른 값 k가 있다고 가정합니다. 다음과 같은 방식으로(한 번만) nums1의 한 요소를 수정하여 두 배열이 동일하게 만들 수 있는지 확인해야 합니다. [-k, k] 범위의 값을 nums1의 모든 요소에 추가할 수 있습니다.피>
따라서 입력이 nums1 =[5,7,11] nums2 =[5,5,11] k =8과 같으면 -2를 추가할 수 있으므로 출력은 True가 됩니다(범위 [-8,8] ) nums1[1]을 사용하여 5로 만들면 nums2와 동일합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- nums1 및 nums2 목록 정렬
- temp :=거짓
- idx :=-1
- 0에서 nums1 - 1까지의 크기 범위에 있는 i에 대해
- nums1[i]가 nums2[i]와 같지 않으면
- temp가 true이면
- 거짓을 반환
- temp :=참
- idx :=나
- temp가 true이면
- nums1[i]가 nums2[i]와 같지 않으면
- idx가 -1 또는 |nums1[idx]-nums2[idx]인 경우| <=k, 그럼
- 참 반환
- 거짓을 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시 코드
def solve(nums1, nums2, k): nums1.sort() nums2.sort() temp = False idx = -1 for i in range(len(nums1)): if nums1[i] != nums2[i]: if temp: return False temp = True idx = i if idx == -1 or abs(nums1[idx]-nums2[idx]) <= k: return True return False nums1 = [5,7,11] nums2 = [5,5,11] k = 8 print(solve(nums1, nums2, k))
입력
[5,7,11], [5,5,11], 8
출력
True