gpt4 book ai didi

java - 检查 int 数组的排列

转载 作者:行者123 更新时间:2023-12-02 10:36:45 24 4
gpt4 key购买 nike

public static boolean isPermutation(int[] listA, int[] listB)
{
if (listA == null || listB == null)
throw new IllegalArgumentException("Violation of precondition: " + "isPermutation. neither parameter may equal null.");

if (listA.length == listB.length)
{
for (int i = 0; i < listA.length; i++)
{
for (int j = i+1; j < listA.length; j++)
{
if (listA[i] == listB[j])
return true;
}
}
}
return false;
}

我正在编写一个函数来检查两个数组列表之间的排列。例如,排列是 {2,2,1},其中唯一排列可以是 {2,1,2} 、{1,2,2} 和 {2,2,1}。 {2,2} 不是唯一排列。我花了一些时间编写这段代码,想知道它是否正确以及是否有人可以解释更好的方法?另外,我被告知要使用基本数组函数来执行此操作,因此不需要 HashMap 、ArrayList 等。

最佳答案

此代码不起作用。您只需检查列表是否具有相同的长度并且至少有一个共同值(如前所述,return true 将立即退出该函数)。所以例如[1,2,3] 和 [3,4,5] 将作为排列返回。

这里正确的方法是对两个数组进行排序,然后逐位置比较它们。这不仅比循环两个数组更有效,而且还可以正确处理重复值。例如。 [1,2,2] 和 [1,1,2] 不是彼此的排列。

关于java - 检查 int 数组的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234241/

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