gpt4 book ai didi

arrays - Codefights aresimilar Challenge in python3

转载 作者:行者123 更新时间:2023-12-05 00:15:19 28 4
gpt4 key购买 nike

我在使用 python3 的 CodeFights 上遇到了“areSimilar”问题。

提示指出“如果可以通过交换一个数组中的最多一对元素从另一个数组中获得一个数组,则两个数组被称为相似。

给定两个数组 a 和 b,检查它们是否相似。”

例如,[1,1,2] 和 [1,2,1] 将通过测试,因为您可以交换任一列表中的两个元素来模拟另一个。

但是, [3,4,5] 和 [4,5,3] 没有通过测试,因为您无法交换任一列表中的两个元素以使其看起来像另一个。

两个列表的长度将始终相同并且长度大于 2。

我当前的代码通过了除一个隐藏测试之外的所有测试,我想知道是否有人可以指导我完成一个过程来帮助我解决这个问题。

谢谢!

最佳答案

我的旧代码也没有通过最后的隐藏测试,我意识到交换功能有问题
我的旧交换功能是:

def swp(i,a,b):
s = 0
item = a[i]
if item in b:
indx = b.index(item)
s = b[i]
b[i] = b[indx]
b[indx] = s
return -1
else:
return -2

认为如果:
a = [2,9,6,8,9,5]
b = [2,5,6,8,9,9]

如果我将 5 与前 9 交换,它将不正确......

这是我更改交换功能后的新代码
def swp(i,a,b):
s = 0
item = a[i]
if item in b:
for j in range(len(b)):
if b[j] == a[i] and b[j] != a[j]:
indx = j
s = b[i]
b[i] = b[indx]
b[indx] = s
return -1
else:
return -2


def check(a,b):
for i in range(len(a)):
if a[i] != b[i]:
return i
return -1

def areSimilar(a, b):
if check(a,b) != -1:
i = check(a,b)
if swp(i,a,b) == -1:
swp(i,a,b)
if check(a,b) != -1:
return False
else:
return False
return True

关于arrays - Codefights aresimilar Challenge in python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44742127/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com