找出数组是否包含唯一元素

To find out if array contains unique elements

我试图查明数组中的所有元素是否都是唯一的。 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() returns false.

您可能想要更改

currentRow[i] = input1[i][j];

currentRow[j] = input1[i][j];

或刚刚过去 input[i]isUnique() 并消除 currentRow 和内部循环。

使用 Java-8 方法会容易得多:

public static boolean isUnique(int[] arr) {
    return IntStream.of(arr).distinct().toArray().length == arr.length;
}