我试图找出数组中的所有元素是否唯一。
PS:我仍然是新手。因此,如果存在,请忽略错误的方法。
public static boolean isUnique(int[] arr)
{
Integer[] integ = new Integer[arr.length];
for (int i = 0; i < arr.length; i++)
{
integ[i] = arr[i];
}
Set<Integer> temp = new HashSet<Integer>(Arrays.asList(integ));
for (int j = 0; j < integ.length; j++)
{
temp.add(integ[j]);
}
if(temp.size()==arr.length)
{
return true;
}
else return false;
最佳答案
除了一些多余的代码,原始的isUnique()
没有什么问题。
您的问题是SolveMagicSquare
的内部循环仅分配给currentRow
数组的单个索引。根据您的问题,您正在使用4x4阵列。您前两次调用isUnique(currentRow)
时,currentRow
仍包含2个或多个0,因为currentRow
的后两个索引尚未初始化。这就是isUnique()
返回false的原因。
您可能要更改
currentRow[i] = input1[i][j];
至
currentRow[j] = input1[i][j];
或只是从
input[i]
到isUnique()
并消除currentRow
和内部循环。