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

Python에서 단일 요소를 수정하여 두 배열을 동일하게 만들 수 있는지 확인

<시간/>

두 개의 배열 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 :=나
  • 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