假设我们有两个数组nums1和nums2以及另一个值k。我们必须通过以下方式(仅一次)修改nums1中的任何一个元素来检查两个数组是否可以相等:我们可以将范围[-k,k]中的任何值添加到nums1的任何元素中。
因此,如果输入类似于nums1 = [5,7,11] nums2 = [5,5,11] k = 8,则输出将为True,因为我们可以加-2(在[-8,8]范围内)和nums1 [1]设为5,则它将与nums2相同。
为了解决这个问题,我们将遵循以下步骤-
对列表nums1和nums2进行排序
temp:=错误
idx:= -1
对于范围从0到nums1-1的i,请执行
如果温度为真,则
temp:=真
idx:=我
返回False
如果nums1 [i]与nums2 [i]不同,则
如果idx为-1或| nums1 [idx] -nums2 [idx] | <= k,然后
返回True
返回False
让我们看下面的实现以更好地理解-
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