Giả sử chúng ta có hai mảng nums1 và nums2 và một giá trị khác k. Chúng ta phải kiểm tra xem cả hai mảng có thể được tạo bằng nhau hay không bằng cách sửa đổi bất kỳ một phần tử nào từ nums1 theo cách sau (chỉ một lần):Chúng ta có thể thêm bất kỳ giá trị nào từ phạm vi [-k, k] vào bất kỳ phần tử nào của nums1.
Vì vậy, nếu đầu vào giống như nums1 =[5,7,11] nums2 =[5,5,11] k =8, thì đầu ra sẽ là True vì chúng ta có thể thêm -2 (trong phạm vi [-8,8] ) với nums1 [1] thành 5 thì nó sẽ giống như nums2.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- sắp xếp danh sách nums1 và nums2
- tạm thời:=Sai
- idx:=-1
- đối với tôi trong phạm vi từ 0 đến kích thước của nums1 - 1, hãy thực hiện
- nếu nums1 [i] không giống nums2 [i], thì
- nếu tạm thời là đúng, thì
- trả về Sai
- temp:=True
- idx:=i
- nếu tạm thời là đúng, thì
- nếu nums1 [i] không giống nums2 [i], thì
- nếu idx là -1 hoặc | nums1 [idx] -nums2 [idx] | <=k, sau đó
- trả về True
- trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
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))
Đầu vào
[5,7,11], [5,5,11], 8
Đầu ra
True