我试图找出数组中的所有元素是否唯一。
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和内部循环。

10-08 14:33