gpt4 book ai didi

algorithm - 如何确定两个有序集合之间排列的符号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:14 24 4
gpt4 key购买 nike

假设 A 和 B 是两个相同大小的数组,并且每个数组都没有重复的成员。有没有什么高效的算法可以

1.判断A和B是否有相同的成员

2.如果 1 的答案为真,确定将 A 带到 B(f(A[i])==f(B[i])) 的排列的符号?

谢谢。

最佳答案

您可以使用哈希表找到将 A 转换为 B 的排列:

pos = hash table (value -> position) of B
perm = []
for a in A:
if a not in pos: return "not the same!"
perm += [pos[a]]

这部分需要 O(n) 的预期时间。

现在您只需找到排列的符号。您至少有两个选择:

事实上,您可以直接在输入数组上使用循环分解,这将产生一个不错且简短的实现。

关于algorithm - 如何确定两个有序集合之间排列的符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23200923/

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